新人容易忽略的问题2
- C/C++ code
#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、静态变量的生命周期[解决办法]
1、值是8
[解决办法]
ls说完了。
lz这个算提问还是科普?看标题像是科普,进来一看是问题。
[解决办法]
除了作用于,其他当做全局来看待~~~~
[解决办法]
1.值是8
2.在fun函数内,i应该算是声明吧
3.普通变量默认为auto动态的,在其作用域内有效,栈上分配的变量会因为作用域的结束而被释放掉内存。而静态的不会,即使它的程序块已经执行完毕了,但是它依然存在,直到程序结束
[解决办法]
1、2、3楼
[解决办法]
1~3楼回答很详细
[解决办法]
同名变量??
建议还是不要这样写吧
[解决办法]
[解决办法]
1、最后test值是多少
每调用一次+1,调用三次+3,5+3=8
2在函数fun中 i是定义还是声明
定义,只执行一次,static 变量只会进行一次初始化就可以一直用
3、静态变量的生命周期
程序结束
[解决办法]
据说“static int i = 5;”不是fun()的一部分,只是为了说明仅允许fun()访问。
[解决办法]
不清楚额
[解决办法]
1.test最后的值为8
2.fun中i是定义,且对其赋了初值,但赋初值只做一次,后两次执行fun时,不再给i赋初始值5
3.从定义到整个程序生命周期结束