C語言中static變數的賦值問題

時間 2021-08-11 18:17:31

1樓:小夏在深圳

static int a = 0; // 執行期時初始化一次, 下次再呼叫時, 不進行初始化工作如下:

printf(“%d”,a);

a++;

int main()

staticlocalvar(); // 第一次呼叫, 輸出a=0

staticlocalvar(); // 第二次呼叫, 記憶了第一次退出時的值, 輸出a=1

return 0;

擴充套件資料

1、static對全域性變數的修飾,可以認為是限制了只能是本檔案引用此變數。有的程式是由好多.c檔案構成。

彼此可以互相引用變數,但加入static修飾之後,只能被本檔案中函式引用此變數。

2、static對棧變數的修飾,可以認為棧變數的生命週期延長到程式執行結束時。一般來說,棧變數的生命週期由os管理,在退棧的過程中,棧變數的生命也就結束。

3、但加入static修飾之後,變數已經不再儲存在棧中,而是和全域性變數一起儲存。同時,離開定義它的函式後不能使用,但如再次呼叫定義它的函式時,它又可繼續使用, 而且儲存了前次被呼叫後留下的值。

2樓:風清安有綢

如果是賦值初始值,那麼在程式執行初始就已經初始化了。

和全域性變數是一樣的。

但體現出來作用是在第一次呼叫。

至於後續賦值,隨便什麼時候都可以

想賦值的時候就賦值咯。

3樓:匿名使用者

呵呵,這就是靜態變數的功能啊,靜態變數只被初始化1次,所以不管幾次呼叫,它都不會再執行int c=3這行啦。而c的值就是你之前運算的結果

4樓:小魚

static定義的變數只有第一次被賦值,這之後會自然使用之前留下來的值了,不會每次都按3初始化的。:-)

5樓:匿名使用者

static變數與普通變數的區別就在於此

每次呼叫fun()函式,

函式開始時,初始化普通變數、分配記憶體,函式結束後,普通變數所佔用的記憶體就被釋放

而對於static變數,只是第一次呼叫時會初始化,函式體結束之後,static變數佔用的記憶體會被保留,從而變數的值不會發生變化,下次呼叫該函式,也不會重新初始化,而是保留上次的值

c語言中在函式中用static修飾的變數還能給

隆隆 樓主 可是c語言中說 有時希望函式中的區域性變數的值在函式呼叫結束後不消失而保留原值,這時就應該指定區域性變數為 靜態區域性變數 用關鍵字static進行宣告。所謂的結束後不消失保留原值是指當前函式結束後該static變數所佔的記憶體不釋放。函式內一般定義的變數 auto 變數 在函式執行結束...

C語言中可以給指標變數賦值常數嗎

會飛的小兔子 1 申請了空間 在常量區 存放了字串 2 在字串尾加上了 0 3 返回地址,這裡就是返回的地址賦值給了p 字串常量 hello 出現在一個表示式中時,hello 表示式使用的值就是這些字元所儲存的地址 在常量區 而不是這些字元本身。所以,可以把字串賦值給指向字元的指標p,而不能把字串賦...

c語言中scanf如果像d的整型變數賦值字元

這個如果順利讀取到的話,字元進行acs值轉換 變成數字 如果是字串的話 有的編譯器會讀取第一個 有些就直接報錯出現亂碼 最終幻想七復刻 因為你指定了 d來讀取一個整數,scanf 函式開始每次讀取一個輸入字元,它跳過空白字元 包含空格 製表符和換行符 直到遇到一個非空白字元,並期望發現一個數字字元或...