1樓:開開心心學做人
static全域性變數應該叫靜態全域性變數,將符號的作用域限制在當前檔案內,不管有沒有static,全域性變數都只初始化一次。
2樓:fairlyblank
都只初始化一次。
static修飾的變數儲存在全域性儲存空間,和普通全域性變數一樣,但static修飾的變數對其他編譯單元不可見。
3樓:向陽
不是非常清楚想問的描述,所以我假設問的是這個位置是static:
inta
;static
intb
;static
void
funa
()void
funb
()好了,應該這個就符合這個問題,即static的全域性變數是過程間的(就是目前的這個檔案)還是全域性(所有的原始檔都能折騰到)的。很好的是static修飾的函式和變數效果一樣。
編譯器輸出的是目標檔案,下一步是鏈結所有的目標檔案。目標檔案裡面有乙個東西叫做匯出符號表,鏈結過程會檢查所有目標檔案的匯出符號表,例如對於b.obj有個匯入符號_func_funb,而a.
obj有個匯出符號_func_funb,則鏈結器就會把它們繫結在一起。
想通這一點後,static的作用就好解釋了——沒有static的全域性符號會作為匯出符號,而有static的則不會放進來。
於是乎,假如你正確定義了跨檔案的兩個int a,那麼它們會被繫結在一起,放在同一位置。並不是初始化一次和初始化n次的區別。而其它檔案要用static int b,必須自己重新寫乙個,而不是自動構建個新的b。
Python全域性變數和區域性變數的問題?
留德華叫獸 sum 5 def add x,y print sum sum x y 這個報錯的原因是 同乙個方程scope下,變數sum僅可能是區域性或者全域性add方程並沒有宣告sum是全域性變數 所以第二行實際上是建立並賦值了乙個區域性變數sumsum x y 那麼在add方程下,sum只可能是...
python中使用全域性變數是否有什麼弊處?
冒泡 就py自己來說,主要還是太過靈活了,比如你可以不定義,直接global,或修改globals字典 a Traceback most recent call last File line 1,in NameError name a is not defined def fglobal a a 1...
全域性變數什麼時候在記憶體中申請空間呢?
Chu 已初始化的全域性變數和區域性靜態變數儲存在 data 段,在檔案中存在 未初始化的全域性變數和區域性靜態變數儲存在 bss 段,因未初始化資料都是 x00 儲存它們無意義,所以將其放於 bss,記錄大小,為變數預留位置,在檔案中不佔空間,引導程式時再分配。tmp cat src.c incl...