變數定義就是告訴編譯器在何處建立變數的儲存,以及如何建立變數的儲存。變數定義指定乙個資料型別,幷包含了該型別的乙個或多個變數的列表。
變數宣告向編譯器保證變數以指定的型別和名稱存在,這樣編譯器在不需要知道變數完整細節的情況下也能繼續進一步的編譯。變數宣告只在編譯時有它的意義,在程式連線時編譯器需要實際的變數宣告。
變數的宣告有兩種情況:
1、一種是需要建立儲存空間的。例如:int a 在宣告的時候就已經建立了儲存空間。
2、另一種是不需要建立儲存空間的,通過使用extern關鍵字宣告變數名而不定義它。 例如:extern int a 其中變數 a 可以在別的檔案中定義的。
除非有extern關鍵字,否則都是變數的定義。
extern int i; //宣告,不是定義
int i; //宣告,也是定義
extern int a; // 宣告乙個全域性變數 a
int a; // 定義乙個全域性變數 a
extern int a =0; // 定義乙個全域性變數 a 並給初值。一旦給予賦值,一定是定義,定義才會分配儲存空間
int a =0; //定義乙個全域性變數 a,並給初值
宣告之後你不能直接使用這個變數,需要定義之後才能使用。
第四個等於第三個,都是定義乙個可以被外部使用的全域性變數,並給初值。
但是定義只能出現在一處。也就是說,不管是 int a 還是 int a=0 都只能出現一次,而那個 extern int a 可以出現很多次。
當你要引用乙個全域性變數的時候,你就要宣告 extern int a 這時候 extern 不能省略,因為省略了,就變成 int a 這是乙個定義,不是宣告。
變數定義:用於為變數分配儲存空間,還可為變數指定初始值。程式中,變數有且僅有乙個定義。
變數宣告:用於向程式表明變數的型別和名字。
定義也是宣告,extern 宣告不是定義。
定義也是宣告:當定義變數時我們宣告了它的型別和名字。
extern 宣告不是定義:通過使用 extern 關鍵字宣告變數名而不定義它。
變數在使用前就要被定義或者宣告。
在乙個程式中,變數只能定義一次,卻可以宣告多次。
定義分配儲存空間,而宣告不會。
c 變數的宣告和定義
1.變數的定義 變數的定義用於為變數分配儲存空間,還可以為變數指定初始值。在乙個程式中,變數有且僅有乙個定義。2.變數的宣告 用於向程式表明變數的型別和名字。程式中變數可以宣告多次,但只能定義一次 3.定義和宣告的區別 一般的情況下我們常常這樣敘述,把分配記憶體空間的宣告稱之為 定義 把不需要分配記...
C 變數(四) 變數的宣告和定義
c 程式通常是由很多個file組成。為了讓每個file能夠使用同乙個變數,c 特意把變數的宣告和定義區別開來。變數的定義,是指為變數分配記憶體,或者有時也為其設定乙個初始值的操作。在程式中,同乙個變數只能定義一次。extern int i declares but not define i int ...
C 中的全域性變數宣告和定義
1.全域性變數 全域性變數在整個原始檔的作用域都是有效的,只需要在乙個原始檔中定義全域性變數,在其他不包含全域性變數定義的原始檔中用extern關鍵字再次宣告這個全域性變數即可。也可以在乙個原始檔中定義這個全域性變數,在標頭檔案中用extern關鍵字再次宣告這個全域性變數,如果其它原始檔要用到這個全...