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

主函数中int i = 0,调用的函数中是int x = 1是啥意思

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


正在回答

2 回答

两个没有直接联系

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

慕粉1631391925 提问者

不太理解这个程序的执行的过程
2017-04-09 回复 有任何疑惑可以回复我~

主函数中的int i=0只是是给i的初始化,

调用的int x = 1

是fn()这个无参数调用函数的函数体的一部分,对静态局部变量x的初始赋值。

int i与int x没有直接关系。

http://img1.sycdn.imooc.com//58e8fb930001cdce15361108.jpg

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

慕粉1631391925 提问者

为啥不把main中的i也赋值成1,理解不了为啥得出来的结果是2 4 8 16 32
2017-04-09 回复 有任何疑惑可以回复我~
#2

PENGboY 回复 慕粉1631391925 提问者

main 函数里面的i赋值随你便!只要在小于5,大不了结果循环次数变少而已。至于2 4 8 16 32,是因为调用的函数fn里有个语句 x*=2;,其次因为static这个东西啊它在执行过程中不释放的就是说会保留上一次的值,【当第一次调用时x=1,则 x*=2;——x=1*2=2,屏幕打印2,然后下一次调用时,这边的x已经是2,不是1!!!,所以执行x*=2;——x=2*2=4~~~~~~~~~~以此类推
2017-04-10 回复 有任何疑惑可以回复我~
#3

阿柠姑娘 回复 PENGboY

顿悟啊~~
2017-05-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

主函数中int i = 0,调用的函数中是int x = 1是啥意思

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