c static關鍵字的使用

2022-09-14 16:48:18 字數 821 閱讀 3937

static:靜態

在下列**中變數a是有生命週期的,呼叫完後就會被銷毀

所以for迴圈每次呼叫test函式列印的結果都是2

#include void test()

int main()

return 0;

}

在下列**中變數a是有生命週期的,呼叫完後就會被銷毀

在使用了static關鍵字後,變數的生命週期被改變了生命週期等於程式的生命週期(本質是改變了變數的儲存位置,由原來的棧區改為了靜態區,全域性變數也是儲存在靜態區)

所以for迴圈每次呼叫test函式列印的結果都會+1

#include void test()

int main()

return 0;

}

static修飾全域性變數,使得這個全域性變數只能在自己所在的原始檔(.c)內部才可以使用,其他原始檔不能使用

*全域性變數能過被其他原始檔內部使用,是因為全域性變數具有外部鏈結屬性

但是被static關鍵字修飾後,就變成了內部鏈結屬性,其他原始檔就不能鏈結到這個靜態的全域性變數

函式也是一樣的情況

add.c

static int year = 2022;//宣告全域性變數
test.c(執行報錯)

#include extern int  year;//使用extern關鍵字從add.c原始檔中宣告外部符號的全域性變數

int main()

c static 關鍵字用法

一 static 變數 static變數大致分為三種用法 1.用於區域性變數中,成為靜態區域性變數.靜態區域性變數有兩個用法,記憶功能和全域性生存期.2.用於全域性變數,主要作用是限制此全域性變數被其他的檔案呼叫 3.用於類中的成員.表示這個成員是屬於這個類但是不屬於類中任意特定物件 1.靜態區域性...

C static關鍵字作用

1.static修飾全域性變數 當同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性,其它的原始檔也能訪問。未加static的全域性變數,在符號表中是global符號,其他目標檔案可見,這樣的符號是要參與符號解析的。加了static之後,是local符號,其他目標檔案不...

C static關鍵字詳解

color blue size large 1.預備知識 動態儲存和靜態儲存 記憶體中供使用者使用的儲存空間可以分為三部分,即 程式區,靜態儲存區,動態儲存區 資料分別存放在靜態儲存區和動態儲存區中。全域性變數儲存在靜態儲存區中,在程式開始執行時給全域性變數分配儲存單元,程式執行完畢就釋放這些單元。...