天天看點

C語言:變量定義

變量定義:用于為變量配置設定存儲空間,還可為變量指定初始值。程式中,變量有且僅有一個定義。

變量聲明:用于向程式表明變量的類型和名字。

定義也是聲明,extern聲明不是定義

定義也是聲明:當定義變量時我們聲明了它的類型和名字。

extern聲明不是定義:通過使用extern關鍵字聲明變量名而不定義它。

[注意]

變量在使用前就要被定義或者聲明。

在一個程式中,變量隻能定義一次,卻可以聲明多次。

定義配置設定存儲空間,而聲明不會。

c++程式通常由許多檔案組成,為了讓多個檔案通路相同的變量,c++區分了聲明和定義。

變量的定義(definition)用于為變量配置設定存儲空間,還可以為變量指定初始值。在程式中,變量有且僅有一個定義。

聲明(declaration)用于向程式表明變量的類型和名字。定義也是聲明:當定義變量的時候我們聲明了它的類型和名字。可以通過使用extern聲明變量名而不定義它。不定義變量的聲明包括對象名、對象類型和對象類型前的關鍵字extern。

extern聲明不是定義,也不配置設定存儲空間。事實上它隻是說明變量定義在程式的其他地方。程式中變量可以聲明多次,但隻能定義一次。

隻有當聲明也是定義時,聲明才可以有初始化式,因為隻有定義才配置設定存儲空間。初始化式必須要有存儲空間來進行初始化。如果聲明有初始化式,那麼它可被當作是定義,即使聲明标記為extern。

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

如何清晰的區分變量聲明和定義

extern通知編譯器變量在其他地方被定義

1.extern告訴編譯器變量在其他地方定義了。

例如:

extern int i; //聲明,不是定義

int i; //聲明,也是定義,未初始化

帶有初始化式的聲明必定式定義

2.如果聲明有初始化式,就被當作定義,即使前面加了extern。

隻有當extern聲明位于函數外部時,才可以被初始化。

extern double pi=3.141592654; //定義

函數的聲明和定義

3.函數的聲明和定義差別比較簡單,帶有{ }的就是定義,否則就是聲明。

extern double max(double d1,double d2); //聲明

除非有extern關鍵字,否則都是變量的定義。

4.除非有extern關鍵字,否則都是變量的定義。

extern int i; //聲明

int i; //定義

程式子產品化設

繼續閱讀