3 回答

TA貢獻1943條經(jīng)驗 獲得超7個贊
全局變量區(qū)分靜態(tài)全局變量和全局變量兩種。
1 靜態(tài)全局變量。
有static修飾的變量為靜態(tài)全局變量。需要定義在函數(shù)外,可以在定義位置到本文件結(jié)束部分使用。定義格式為
static type var=init_value;
作用為定義一個類型為type,變量名為var的靜態(tài)全局變量,并賦初始化值為init_value。當(dāng)=init_value部分被省略時,系統(tǒng)自動初始化為0值。
可以用extern擴展可使用空間,聲明格式為
extern type var;
注意不可以有初始化值。
extern聲明只允許出現(xiàn)在本文件內(nèi),聲明后,可以在聲明語句到文件尾使用該變量。
2 全局變量。
沒有static修飾的變量為全局變量。需要定義在函數(shù)外,可以在定義位置到本文件結(jié)束部分直接使用。定義格式為
type var=init_value;
作用為定義一個類型為type,變量名為var的全局變量,并賦初始化值為init_value。當(dāng)=init_value部分被省略時,系統(tǒng)自動初始化為0值。
要在文件其它位置或其它文件中使用時,需要用extern進行聲明,聲明格式為
extern type var;
注意不可以有初始化值。
聲明后,可以在聲明語句到聲明語句所在文件尾使用該變量。也可以寫在頭文件中,這樣在引用該頭文件的C文件中,可以在引用位置到文件結(jié)尾使用該變量。

TA貢獻1847條經(jīng)驗 獲得超11個贊
全局變量在同一個工程中只能是唯一的,即不能在兩個.c里面定義同名全局變量。
extern只是告訴編譯器這個.c在其他的文件里面聲明了,我這個.c不用聲明這個變量。最后鏈接的時候編譯器會找這個變量的實現(xiàn),如果沒有實現(xiàn),鏈接報錯。
1、在a.c里使用extern定義,只是聲明一下這個變量在其他文件定義,不是真正的定義,所以這樣是錯誤的。
- 3 回答
- 0 關(guān)注
- 132 瀏覽
添加回答
舉報