新人容易忽略的问题2

七擒关羽 2012-03-01 04:59:46

#include <stdio.h>
static int i = 0;

int fun()
{
static int i = 5;
return ++i;
}

int main()
{
int test;
test = fun();
test = fun();
test = fun();
printf("%d\n",test);
return 0;
}
1、最后test值是多少
2、在函数fun中 i是定义还是声明
3、静态变量的生命周期
...全文
240 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
七擒关羽 2012-03-07
  • 打赏
  • 举报
回复
1、最后test值是多少
2、在函数fun中 i是定义还是声明
3、静态变量的生命周期

解答如下:
1、这个各位理解局部静态变量的就应该知道 test = 8
2、在fun函数内 i是声明,对一个变量在有效范围内只能被定义一次。
3、静态变量的生命周期是与程序一致的
北漂-huang 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 qixing1115 的回复:]
引用 8 楼 anyidan 的回复:
1、2、3楼

是的
[/Quote]
++
一aa一 2012-03-07
  • 打赏
  • 举报
回复
这个是考静态成员只初始化一次的?
c87527124 2012-03-02
  • 打赏
  • 举报
回复
据说“static int i = 5;”不是fun()的一部分,只是为了说明仅允许fun()访问。
qixing1115 2012-03-02
  • 打赏
  • 举报
回复
1、最后test值是多少
每调用一次+1,调用三次+3,5+3=8
2在函数fun中 i是定义还是声明
定义,只执行一次,static 变量只会进行一次初始化就可以一直用
3、静态变量的生命周期
程序结束
qixing1115 2012-03-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 anyidan 的回复:]
1、2、3楼
[/Quote]
是的
CloundSea 2012-03-02
  • 打赏
  • 举报
回复
同名变量??
建议还是不要这样写吧
wizard_tiger 2012-03-02
  • 打赏
  • 举报
回复
LS都说清楚了,学习一下。
josephSC 2012-03-02
  • 打赏
  • 举报
回复
1~3楼回答很详细
jixiang1983 2012-03-02
  • 打赏
  • 举报
回复
1.test最后的值为8
2.fun中i是定义,且对其赋了初值,但赋初值只做一次,后两次执行fun时,不再给i赋初始值5
3.从定义到整个程序生命周期结束
  • 打赏
  • 举报
回复
不清楚额
七擒关羽 2012-03-02
  • 打赏
  • 举报
回复
发现现在很多人还是对 定义与声明区分不开。。。。 今天下班的时候结贴
AnYidan 2012-03-01
  • 打赏
  • 举报
回复
1、2、3楼
  • 打赏
  • 举报
回复
1.值是8
2.在fun函数内,i应该算是声明吧
3.普通变量默认为auto动态的,在其作用域内有效,栈上分配的变量会因为作用域的结束而被释放掉内存。而静态的不会,即使它的程序块已经执行完毕了,但是它依然存在,直到程序结束
东莞某某某 2012-03-01
  • 打赏
  • 举报
回复
除了作用于,其他当做全局来看待~~~~
乐哉悠哉 2012-03-01
  • 打赏
  • 举报
回复
静态局部变量和静态全局变量。局部变量的作用范围在其函数内部,初始化一次~赞~
luciferisnotsatan 2012-03-01
  • 打赏
  • 举报
回复
ls说完了。

lz这个算提问还是科普?看标题像是科普,进来一看是问题。
面包大师 2012-03-01
  • 打赏
  • 举报
回复
2、定义,并初始化,只会执行一次这个,然后,在函数fun中定义的i就会覆盖全局的i,所以是在i=5上加加
面包大师 2012-03-01
  • 打赏
  • 举报
回复
3、整个程序结束
面包大师 2012-03-01
  • 打赏
  • 举报
回复
1、值是8

33,311

社区成员

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

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