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

void fn()这个函数里规定static int x = 1既然为静态,为何在规定for(i=0;i<5;i++)还执行x*=2这个公式,

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

    }

    extern int x;      //调用外部变量

    printf("x=%d\n",x);

    return 0;

}

int x=100;



有疑问,想不明白,static 既然为静态,为啥还要会跟着for(i=0;i<5;i++)这个执行。为什么x不一直都是2呢。

正在回答

1 回答

因为你只设置了,x=1为静态,而且这个fn()为void,是不返回值贮存的,况且,static静态只是说只能赋初值一次,并没有说不能运算,所谓的静态,只是一种贮存方式而已,并不是他有了就不能改变了

1 回复 有任何疑惑可以回复我~
#1

bearlala 提问者

非常感谢!
2015-01-31 回复 有任何疑惑可以回复我~
#2

幕布斯6946245

大神,请问怎样理解静态与动态
2015-09-09 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

void fn()这个函数里规定static int x = 1既然为静态,为何在规定for(i=0;i<5;i++)还执行x*=2这个公式,

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信