猿问

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

#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;


闷a
浏览 1481回答 3
3回答

ruibin

你可以把静态变量理解为挂载车子外面的东西。函数调用完毕后会清理局部变量,就像车子用完之后我们清理一下车子内部。但是,由于静态变量是挂在车子外面的,所以不会被清理。也就是说static int x = 1;就像定义在外面的int x = 1;差不多,不过外部不能访问。  以后你理解内存泄露,闭包哪些东西就懂了。现在就记住行了。

ruibin

#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;结果一样。
随时随地看视频慕课网APP
我要回答