亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

主函數中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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號