|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 请高手帮忙解答一下关于静态变量的一个问题!
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
468
人关注过本帖
标题:
请高手帮忙解答一下关于静态变量的一个问题!
只看楼主
加入收藏
vui111
等 级:
新手上路
帖 子:7
专家分:0
注 册:2008-5-13
结帖率:
0
楼主
收藏
问题点数:0 回复次数:3
请高手帮忙解答一下关于静态变量的一个问题!
static int j;
void fun1(void)
{
static int i = 0;
i ++;
}
void fun2(void)
{
j = 0;
j++;
}
intmain()
{
for(k=0; k<10; k++)
{
fun1();
fun2();
}
return 0;
请问i和j的值最后是多少?为什么?(在C语言深度剖析中看到的,但我得到的答案却是相反的,希望能帮讲解一下)
搜索更多相关主题的帖子:
变量
静态
解答
2010-08-19 13:32
举报帖子
使用道具
赠送鲜花
heartnheart
等 级:
蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
第
2
楼
收藏
得分:0
i 为10 ,j为1 ij都是静态变量,所以你自始至终都是对同一个ij操作
2010-08-19 13:42
举报帖子
使用道具
赠送鲜花
erikyo
等 级:
蜘蛛侠
威 望:
2
帖 子:270
专家分:1154
注 册:2010-6-10
第
3
楼
收藏
得分:0
可以自己动手做测试的吗:
#include <stdio.h>
static int j;
void fun1(void)
{
static int i = 0;
i++;
printf("i = %d\n",i);
}
void fun2(void)
{
j = 0;
j++;
printf("j = %d\n",j);
}
int main()
{
int k =0 ;
for(k=0; k<10; k++)
{
fun1();
fun2();
}
return 0;
}
显示最后i = 10, j =1
很简单,静态全局变量j,每次进入fun2,都被赋值为0,然后做加1操作,输入永远是1
静态局部变量只在第一次进入函数的时候初始化,然后保存这个值,以后的每次加1操作都是在上次保存的值上做操作的。
2010-08-19 13:47
举报帖子
使用道具
赠送鲜花
vui111
等 级:
新手上路
帖 子:7
专家分:0
注 册:2008-5-13
第
4
楼
收藏
得分:0
哦,谢谢解答!
2010-08-19 15:04
举报帖子
使用道具
赠送鲜花
4
1/1页
1
快速回复:
请高手帮忙解答一下关于静态变量的一个问题!
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.017636 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved