靜態區域性變數

2021-10-09 17:51:03 字數 720 閱讀 2545

靜態區域性變數的宣告方式

在區域性變數的型別前加上static即可進行靜態區域性變數的宣告和定義

靜態區域性變數的作用域

和區域性變數相同,從變數宣告的位置起到花括號結束。

靜態區域性變數的生命週期

與區域性變數不同,靜態區域性變數的生命週期是與程式「共存亡」。

即從載入資源(執行**前)開始,到程式關閉,都是變數的生命週期。

為了驗證此說法,可執行下列**:

#include #include void fun()

int main(void)

執行結果為:

a=0,b=0

a=0,b=1

a=0,b=2

因為每次執行fun函式時都要重新定義一邊區域性變數a,所以被列印出的a的值始終是1。

而因為b為靜態區域性變數,在**執行前,即資源載入時就已經執行了"static int b = 0;"這條**,所以在執行**的過程中,並沒有"static int b = 0;"這條**,因為早就執行掉了,相當於這條語句已經「沒了」。

驗證方法:可以用斷點來驗證,把斷點點在"static int b = 0;"這行語句前,執行時就會發現這個斷點「沒了」。

靜態區域性變數

在區域性變數前加上 static 關鍵字,就成了靜態區域性變數。靜態區域性變數存放在記憶體的全域性資料區。函式結束時,靜態區域性變數不會消失,每次該函式呼叫時,也不會為其重新分配空間。它始終駐留在全域性資料區,直到程式執行結束。靜態區域性變數的初始化與全域性變數類似 如果不為其顯式初始化,則c 自動...

靜態區域性變數

有時希望函式中的區域性變數的值在函式呼叫結束後不消失而保留原值,即其占用的儲存單元不釋放,在下一次該函式呼叫時,該變數保留上一次函式呼叫結束時的值。這時就應該指定該區域性變數為靜態區域性變數 static local variable 例 觀察靜態區域性變數的值 include using name...

靜態區域性變數

通常,在函式體內定義了乙個變數,每當程式執行到該語句時都會給該區域性變數分配棧記憶體。但隨著程式退出函式體,系統就會收回棧記憶體,區域性變數也相應失效。但有時候我們需要在兩次呼叫之間對變數的值進行儲存。通常的想法是定義乙個全域性變數來實現。但這樣一來,變數已經不再屬於函式本身了,不再僅受函式的控制,...