2012年12月7日 星期五

C陷阱:變數的宣告&定義



宣告 (Declarations)

變數宣告,讓程式得知某個變數的型態名稱(不配置空間)。(宣告可以出現一次以上,只要內容一致)。
A declaration makes known the type and name of the variable to the program.

寫法/例子:

extern int i;

//只做宣告,不配置空間


定義 (Definitions)

定義,也是一種宣告。變數的定義除了宣告型態與名稱外,也為這個變數配置空間,也可能給予初始值。然而程式中一個變數只能有一次定義,不可以重複定義。
A definition is also a declaration. When we define a variable, we declare its name and type. A deinition of a variable allocates storage for the variable and may also specify an initial value for the variable. There mush be one and only one definition of a variable in a program.

寫法/例子1:

int i;

//定義,可以只配置空間,尚不決定初始值。

寫法/例子2:

int i = 1 ;

//定義,配置空間並給予初始值。

寫法/例子3: 若用extern宣告變數同時又給初始值的話,則會被視為一個定義。

extern int i = 1 ;

//只要設初值,就會變成定義。


使用變數
  1. 我們在使用變數之前,必須先宣告定義一次,然後需要的話給它一個初始值。
  2. 若此變數要在多個檔案使用(外部連結性全域變數),請在某一個檔案定義它,而其他每個用到該變數的檔案都要宣告該變數。

各種錯誤

變數不能只有宣告,而沒有定義,會發生 linking error
(函式就可以只有宣告,沒有定義)

變數若定義不只一次,會發生重複定義的錯誤!




沒有留言: