为了账号安全,请及时绑定邮箱和手机立即绑定

定义静态局部变量知道怎么做但是不知道意思看不懂!!!谁帮我解释一下吗?

定义静态局部变量知道怎么做但是不知道意思看不懂!!!谁帮我解释一下吗?

C C++
闷a 2017-05-03 19:54:07
#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;差不多,不过外部不能访问。  以后你理解内存泄露,闭包哪些东西就懂了。现在就记住行了。

查看完整回答
2 反对 回复 2017-05-03
  • 闷a
    闷a
    哦哦哦好像大概懂了谢谢你啦!!
?
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;


结果一样。

查看完整回答
1 反对 回复 2017-05-03
  • 3 回答
  • 0 关注
  • 1474 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信