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