宣告和定義

2021-05-22 21:46:42 字數 800 閱讀 6298

在宣告部分出現變數有兩種情況:

(1)一種是需要建立儲存空間的,如:int a;

(2)另一種是不要建立儲存空間的,如:extern int a;

前者是"定義性宣告" (defining declaration), 或者稱為"定義"(definition);

後者是"引用性宣告" (referencing declaration).

廣義地說,宣告包括定義,但並非所有的宣告都是定義.對"int a;"來說,它既是定義又是宣告; 對"extern a;"而言,它是宣告不是定義.

一般為了敘述方便,把建立儲存空間的宣告稱定義,而不把建立儲存空間的宣告稱為宣告.

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

變數的宣告和定義是比較容易混淆的概念,因此記住一點,除非有extern關鍵字,否則都是變數的定義。由此,我們可以歸納出幾點好的程式設計風格:

1. 不要把變數定義放入.h檔案,這樣容易導致重複定義錯誤。 

2. 盡量使用static關鍵字把變數定義限制於該原始檔作用域內,除非該變數被設計成全域性的。

所以一般設計標頭檔案時候不要把變數的定義放進去。但是可以在標頭檔案中宣告乙個變數,在用的時候包含這個標頭檔案,當修改變數值的時候就直接修改標頭檔案裡的內容,防止發生錯誤。

總結:變數在使用前就要被定義或者宣告。

在乙個程式中,變數只能定義一次,卻可以宣告多次。

定義分配儲存空間,而宣告不會。

另外對於函式的宣告和定義就不過多討論了,帶有的就是定義,否則就是宣告。

宣告和定義

宣告 向計算機介紹名字,它說,這個名字是什麼意思 而 定義 為這個名字分配 儲存空間。無論涉及到變數時還是函式時含義都一樣。無論在哪種情況下,編譯器都在 定義 處分配儲存空間。對於變數,編譯器確定這個變數佔多少儲存單元,並在記憶體中產生存放它們 的空間。對於函式,編譯器產生 並為之分配儲存空間。函式...

宣告和定義

宣告 函式或變數會在某處出現,在此處,該函式或變數長這樣。定義 這就是這個函式或者變數。定義處,為函式或變數分配儲存空間。乙個變數或函式,只能有乙個定義。one definition rule.定義也可以是宣告。如果乙個變數或者函式有多個檔案要用,可以用extern.extern 的原理很簡單,就是...

宣告和定義

函式或者變數的宣告在程式中可以出現多次,但是函式或者變數的定義只能夠出現一次,因此,一般把宣告放在標頭檔案中,把定義放在cpp檔案中。1 關於變數的宣告和定義 在標頭檔案中寫 int g ntmp,編譯器會認為這是乙個定義,因此在鏈結的時候會出錯 解決這個問題有兩個辦法 1 寫成const int ...