c++中的定義與宣告是兩個很容易混淆的概念,而且對於初學者來說,必須要區分兩個概念的不同。
乙個變數的定義是用於為變數分配儲存空間。也可以為變數指定初始值。也就是說,定義不一定要有初始值,但是一定要分配儲存空間。而乙個變數的宣告則是說明乙個變數的型別以及名字。定義也是宣告,讀者可以這樣想,如果乙個變數要分配儲存空間,必須再分配之前要指定變數的型別和名字。所以,用乙個數學表示式來表示宣告與定義的關係可以這樣寫:定義<=宣告。
乙個變數只能定義一次,但是可以宣告多次。
現在我們就舉幾個例子。
extern int i;
int i;
第乙個是宣告乙個全域性變數i,記住,可以通過使用extern關鍵字宣告乙個變數而不去定義它。不定義變數的宣告包括 物件名、物件型別和物件類前錢的關鍵字extern。
第二個就是定義了。他首先宣告了乙個變數i,並為它分配了乙個兩個位元組的儲存空間。從這個例子中我們可以知道一點:乙個變數的定義可以沒有初始值。
只有當宣告也是定義時,宣告才可以有初始值,因為只有定義才分配儲存空間。往深里想一下就可以明白這一點,如果不分配儲存空間,何以給變數賦初值?
下面看這個例子。
extern int i=5;
這個例子有關鍵字extern,變數型別,變數名,但是,後面還有乙個初值,這很明顯是乙個定義。因為它分配了儲存空間並賦了初值。
所以,要看乙個表示式是是定義還是宣告,只要看是否為變數分配了儲存空間。沒有初始值不一定就是宣告。
C 中宣告與定義的區別
宣告 一種把乙個名稱引入或者重新引入到某個c 作用域的構造。定義 它也是一種宣告,但該宣告必須給出被宣告實體的細節。對於變數而言,這裡的細節是指 為被宣告實體保留儲存空間。對於class型別和函式定義而言,指的是包含有一隊花括號內容的宣告。對於外部變數而言,指的是前面沒有關鍵字extern或者在宣告...
C 定義與宣告 區別
c primer 第四版2.3.5節中這麼說到 變數定義 用於為變數分配儲存空間,還可為變數指定初始值。程式中,變數有且僅有乙個定義。變數宣告 用於向程式表明變數的型別和名字。定義也是宣告 當定義變數時我們宣告了它的型別和名字。extern關鍵字 通過使用extern關鍵字宣告變數名而不定義它。1....
C 宣告與定義的區別
一,宣告與定義的區別 宣告是將乙個名稱引入程式。定義提供了乙個實體在程式中的唯一描述,涉及到記憶體空間的分配以及初始值的設定。宣告和定義有時是同時存在的。1,定義也是宣告,extern宣告不是定義,即不分配儲存空間。int a 10 定義就是宣告 extern int b 宣告,不是定義 注意 如果...