c 宣告和定義的區別

2021-08-25 01:41:40 字數 487 閱讀 8579

c++程式通常由許多檔案組成,為了讓多個檔案訪問相同的變數,c++區分了宣告和定義。

變數的定義(definition)用於為變數分配儲存空間,還可以為變數指定初始值。在程式中,變數有且僅有乙個定義。

宣告(declaration)用於向程式表明變數的型別和名字。定義也是宣告:當定義變數的時候我們宣告了它的型別和名字。可以通過使用extern宣告變數名而不定義它。不定義變數的宣告包括物件名、物件型別和物件型別前的關鍵字extern。

extern宣告不是定義,也不分配儲存空間。事實上它只是說明變數定義在程式的其他地方。程式中變數可以宣告多次,但只能定義一次。

只有當宣告也是定義時,宣告才可以有初始化式,因為只有定義才分配儲存空間。初始化式必須要有儲存空間來進行初始化。如果宣告有初始化式,那麼它可被當作是定義,即使宣告標記為extern。

任何在多檔案中使用的變數都需要有與定義分離的宣告。在這種情況下,乙個檔案含有變數的定義,使用該變數的其他檔案則包含該變數的宣告(而不是定義)。

C 宣告和定義的區別

宣告是告知編譯器該程式元素的名稱以及型別,定義則是使編譯器為程式元素分配記憶體空間。二者最根本的區別就是是否分配記憶體。宣告不會導致記憶體的分配,而定義會分配記憶體。在c 程式中宣告可以有多次,但是定義只能有一次。因此不能將變數的定義放置於標頭檔案中,由於標頭檔案會被多次引用,就會導致變數在多個原始...

C中宣告和定義的區別

對變數來說,宣告 declaration 指向編譯器說明變數的型別和名字 定義 definition 指向編譯器說明變數的型別和名字的同時,為變數分配記憶體,可指定初值也可不指定。可以看出,定義包含於宣告中,平常最常見的 int var 就是一種宣告,或者說未指定初值的定義。兩者的其他區別如下 1....

宣告和定義的區別

c primer 3rd 5.2宣告語句講得不清不楚的,還是effective c 2nd講得清楚 所謂宣告 declaration 就是用來將乙個object function class 或tempate的型別名稱告訴編譯器 宣告式並不帶有細節資訊 對object而言,其定義式是編譯器為它配置記...