第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C函數內部的靜態(tài)變量

C函數內部的靜態(tài)變量

C
慕森王 2019-11-27 13:04:50
什么將被打印出來?6 6或6 7?又為什么呢?void foo(){    static int x = 5;    x++;    printf("%d", x);}int main(){    foo();    foo();    return 0;}
查看完整描述

3 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

這里有兩個問題,生存期和范圍。


變量的范圍是可以看到變量名稱的位置。在此,x僅在函數foo()中可見。


變量的生存期是變量存在的時間。如果x是在沒有關鍵字static的情況下定義的,則生存期將是從foo()的條目到foo()的返回;因此每次調用都會將其重新初始化為5。


關鍵字static的作用是將變量的生存期延長到程序的生存期;例如,初始化僅發(fā)生一次,然后該變量將在以后對foo()的所有調用中保留其值-無論它變?yōu)楹畏N值。


查看完整回答
反對 回復 2019-11-27
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

輸出:6 7


原因:靜態(tài)變量僅初始化一次(不同于自動變量),并且在運行時將忽略靜態(tài)變量的進一步定義。并且,如果未手動初始化,則會自動通過值0進行初始化。所以,


void foo() {

    static int x = 5; // assigns value of 5 only once

    x++;

    printf("%d", x);

}


int main() {

    foo(); // x = 6

    foo(); // x = 7

    return 0;

}


查看完整回答
反對 回復 2019-11-27
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

與具有以下程序相同:


static int x = 5;


void foo()

{

    x++;

    printf("%d", x);

}


int main()

{

     foo();

     foo();

     return 0;

}

static關鍵字在該程序中所做的全部工作是(實際上)告訴編譯器“嘿,我在這里有一個變量,我不希望其他人訪問,也不告訴其他人它存在”。


在方法內部,static關鍵字告訴編譯器與上面相同,但是,“不要告訴任何人此函數存在于此函數之外,只能在此函數內部訪問”。


我希望這有幫助


查看完整回答
反對 回復 2019-11-27
  • 3 回答
  • 0 關注
  • 512 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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