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

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

靜態(tài)局部變量又和靜態(tài)全局變量又有何區(qū)別?

static int x = 1; ? //定義靜態(tài)局部變量 ? ?x*=2; ? ?printf("x=%d\n",x); ? ? 靜態(tài)局部變量在編譯時賦初值,即只賦初值一次;-->靜態(tài)局部變量值可以變化嗎? 如果可以變化,那么靜態(tài)局部變量又和靜態(tài)全局變量又有何區(qū)別?

正在回答

1 回答

首先:C語言中的名字(標(biāo)識符)具有很多屬性:生存期、可鏈接性...等

生存期分為:

  1. 靜態(tài)生存期:在程序開始前就已經(jīng)存在并初始化了,這個變量要的等整個程序都結(jié)束后才銷毀。

  2. 動態(tài)生存期:就是程序流程運行到這個位置時才為這個變量分配內(nèi)存,程序流程離開這個變量的作用域后就銷毀了它。

可鏈接性大致分為:

  1. 內(nèi)部鏈接:這個變量可以在代碼所在的文件中使用。

  2. 外部鏈接:這個變量在整個程序中(所有的文件中)都可以使用。

  3. 不可鏈接:這個變量只能在其代碼塊中被使用。常見的情況就是只能在其所在的函數(shù)中被使用。


static修飾符對于局部變量和全局變量的意義是不一樣的:

局部變量默認(rèn)具有 動態(tài)生存期不可鏈接 的屬性。 局部變量是存在于函數(shù)中的,由于它具有動態(tài)生存期,故你每一次調(diào)用函數(shù),其中的這個變量都是全新的一個。你存儲于其中的值在函數(shù)調(diào)用結(jié)束后就不存在了,再次調(diào)用這個函數(shù)的得到的仍是全新一個變量。 但如果變量被static修飾,就成了靜態(tài)局部變量,“靜態(tài)”是指改變了其生存期,變成了靜態(tài)生存期,那么多次調(diào)用這個函數(shù)所訪問的就是同一個變量。這樣你存入其中的值在下一次函數(shù)調(diào)用時仍然存在。

全局變量默認(rèn)具有 靜態(tài)生存期外部鏈接 屬性。 全局變量是存在于一個代碼文件中,并且是任何一個函數(shù)之外的。它在整個程序運行期間都存在,并且外部鏈接性保證它可以被本程序的其他文件中的代碼所使用。 而如果被static修飾,則鏈接性就變成內(nèi)部鏈接了,那這個變量就只能被本文件中的代碼使用了。對它來說static并不改變其生存期。


你提問中說的“靜態(tài)局部變量...只賦初值一次”說的就是你每一次調(diào)用函數(shù)其實都是用的同一個變量,而不是像普通局部變量一樣在每次調(diào)用時都重新生成,重新初始化。

所以明白了嗎:靜態(tài)局部變量的值當(dāng)然是可以變化的,而且它可以讓你在多次調(diào)用函數(shù)后保留存在其中的值。

“靜態(tài)”二字對于兩種變量來說都不影響其值是否可以被改變,變量的值能否被改變是由?const限定符 決定的。


4 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

靜態(tài)局部變量又和靜態(tài)全局變量又有何區(qū)別?

我要回答 關(guān)注問題
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號