全域性變數是在函式的外部定義的,它的作用域為從變數定義處開始,到本程式檔案的末尾。如果外部變數不在檔案的開頭定義,其有效的作用範圍只限於定義處到檔案終了。
如果同乙個原始檔中,全域性變數與區域性變數同名,則在區域性變數的作用範圍內,全域性變數被「遮蔽」,即它不起作用。
如果寫在檔案的開頭,可以省略extern。
在靜態儲存區分配儲存空間
#include
#include
int a=5;
//全域性變數a,寫在檔案的開頭,省略extern
void
print_a()
intmain
(void
)
結果:
5
10
全域性變數在整個程式中起作用,如果程式包含多個程式檔案模組,可以通過外部宣告,使得全域性變數的作用範圍擴充套件到其他模組,也可以通過定義靜態全域性變數,使其作用範圍僅限制在這個模組
全域性變數只能被定義一次,如果其他模組要使用該全域性變數,需要通過外部變數的宣告。
外部變數宣告格式: extern 變數名錶;只起說明作用,不分配儲存單元,對應儲存單元在全域性變數定義時分配。
main.c
#include
int count ;
extern
void
write_extern()
;int
main()
support.c
#include
extern
int count;
void
write_extern
(void
)
當程式只有乙個檔案模組,其與一般全域性變數作用相同; 當程式有多個模組時,c語言靜態全域性變數的作用範圍侷限於該模組。
全域性變數和靜態全域性變數
全域性變數和區域性變數是從變數的作用域的角度劃分。靜態變數和動態變數是從變數的記憶體分配的角度劃分。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同,區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原...
c 全域性變數 靜態全域性變數
全域性變數是靜態儲存方式,靜態全域性變數也是靜態儲存方式,這兩者在儲存方式上並無不同。區別 雖在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,靜態全域性變數在各個原始檔中都是有效的。靜態區域性變數則限制了其作用域,只在定義該變數的原始檔內有效,在同一源程式的其它原始檔中不能...
C 全域性變數 靜態全域性變數 靜態區域性變數
全域性變數儲存在靜態儲存區,其作用域是全域性作用域,生命週期是整個程式的生命週期。具體而言,在乙個檔案中定義乙個全域性變數,在程式的其它檔案中可以通過extern關鍵字再次宣告說明該變數已經定義。靜態全域性變數儲存在靜態儲存區,其作用域只能是定義該變數的檔案,生命週期是整個程式的生命週期。靜態區域性...