#include <stdio.h>void fn(){ static int x = 1; //定义静态局部变量 x*=2; printf("x=%d\n",x); }int main(){ int i; for(i=0;i<5;i++) { fn(); 这里什么意思???为什么会出现那样的结果??? 为什么删除啦上面的x*=2答案就会全变成1! } extern int x; //调用外部变量 printf("x=%d\n",x); getchar();}int x=100;
3 回答
已采纳
ruibin
TA贡献358条经验 获得超213个赞
你可以把静态变量理解为挂载车子外面的东西。函数调用完毕后会清理局部变量,就像车子用完之后我们清理一下车子内部。但是,由于静态变量是挂在车子外面的,所以不会被清理。也就是说static int x = 1;就像定义在外面的int x = 1;差不多,不过外部不能访问。 以后你理解内存泄露,闭包哪些东西就懂了。现在就记住行了。
ruibin
TA贡献358条经验 获得超213个赞
#include <stdio.h>
int x = 1; //定义静态局部变量
void fn()
{
x*=2;
printf("x=%d\n",x);
}
int main()
{
int i;
for(i=0;i<5;i++)
{
fn();
}
extern int x; //调用外部变量
printf("x=%d\n",x);
getchar();
}
//int x=100;
结果一样。
- 3 回答
- 0 关注
- 1480 浏览
添加回答
举报
0/150
提交
取消