关于static

zuoyifan100 2011-10-21 08:04:12
以下程序:
int main ()
{
for (int count = 0;count < 2;count++)
counter();
return 0;
}

void counter ()
{
int static num = 0;
cout << num++;
return;
}

在第一次给num赋值后num = 0,然后num++,所以num = 1,之后num继续存在与内存里,不随着函数counter的结束而被释放,但第二次调用counter的时候又再一次把num 赋值为0,这样的话第二次输出应该还是0啊,为什么第二次输出的结果是1呢?
...全文
189 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
wizard_tiger 2011-10-22
  • 打赏
  • 举报
回复
楼上都说清楚了,就是只初始化一次。
和全局变量很像,不过作用域不同。
Roy_Smiling 2011-10-22
  • 打赏
  • 举报
回复
static的作用:1、限定访问域
2、限定存储域
注意:只初始化一次。
gfy5216 2011-10-22
  • 打赏
  • 举报
回复
static赋值一次,第二次时不被赋值的,即使你写了赋值语句
lovestefanie 2011-10-22
  • 打赏
  • 举报
回复
整个程序的运行过程只复制一次
保存在静态数据区中
zuoyifan100 2011-10-22
  • 打赏
  • 举报
回复
感谢~
wjm371002515 2011-10-22
  • 打赏
  • 举报
回复
2楼正解
静态变量只能被初始化一次
后面如果在被初始化就直接呗忽略掉了
ygy4444 2011-10-22
  • 打赏
  • 举报
回复
2楼正解,这个问题可参照二级C语言考试 2011年9月笔试题第33题
静态变量在函数中赋初值只有第一次执行……
nand库路泽 2011-10-22
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 pathuang68 的回复:]

请参考拙作:
static关键字
[/Quote]分析的很透彻!!
cocoabird 2011-10-21
  • 打赏
  • 举报
回复
搜下再来问撒
marphain 2011-10-21
  • 打赏
  • 举报
回复
静态存储区
AnYidan 2011-10-21
  • 打赏
  • 举报
回复
现在的课本不讲 static 吗?
pathuang68 2011-10-21
  • 打赏
  • 举报
回复
请参考拙作:
static关键字
zhanglu1988em 2011-10-21
  • 打赏
  • 举报
回复
2楼正解
無_1024 2011-10-21
  • 打赏
  • 举报
回复
静态变量相当于全局变量 只初始化一次 以后就都不初始化
crakme 2011-10-21
  • 打赏
  • 举报
回复
2楼正解
pengsheng1988 2011-10-21
  • 打赏
  • 举报
回复
静态变量的问题,静态变量只初始化一次,第二次调用counter()的时候就不会再把num初始化为0了
elegant87 2011-10-21
  • 打赏
  • 举报
回复
static变量在第一次调用counter的时候进行初始化,并将num存储在静态存储区中
第二次以及以后调用counter的时候,将不会对num进行初始化,就是说 int static num = 0;
这句话不会被执行
Vincent_Song 2011-10-21
  • 打赏
  • 举报
回复
静态变量只赋值一次,以后就会一直保留在内存中。
猪不讲理 2011-10-21
  • 打赏
  • 举报
回复
初始化一次
小小阿狸 2011-10-21
  • 打赏
  • 举报
回复
静态存储区
....................
加载更多回复(1)

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧