1. 程式人生 > >c語言定義變數與宣告的區別

c語言定義變數與宣告的區別

定義是要為變數分配儲存空間,還可以在定義的時候為變數指定初始值。

所謂的定義就是(編譯器)建立一個物件,為這個物件分配一塊記憶體並給它取上一個名字,這個名字就是我們經常所說的變數名或物件名。但注意,這個名字一旦和這塊記憶體匹配起來(可以想象是這個名字嫁給了這塊空間,沒有要彩禮啊。^_^),它們就同生共死,終生不離不棄。並且這塊記憶體的位置也不能被改變。一個變數或物件在一定的區域內(比如函式內,全域性等)只能被定義一次,如果定義多次,編譯器會提示你重複定義同一個變數或物件。

在一個程式中,變數有且僅有一次定義。

宣告用於向程式表明變數的型別和名字。

第一重含義:告訴編譯器,這個名字已經匹配到一塊記憶體上了(伊人已嫁,吾將何去何從?何以解憂,唯有稀粥),下面的程式碼用到變數或物件是在別的地方定義的。宣告可以出現多次。

第二重含義:告訴編譯器,我這個名字我先預定了,別的地方再也不能用它來作為變數名或物件名。比如你在圖書館自習室的某個座位上放了一本書,表明這個座位已經有人預訂,別人再也不允許使用這個座位。其實這個時候你本人並沒有坐在這個座位上。這種宣告最典型的例子就是函式引數的宣告

定義包括宣告:定義變數時我們聲明瞭變數的型別和名字。

可以使用extern關鍵字宣告變數名而定義它。不定義變數的宣告包括變數名,變數型別和變數型別前的關鍵字extern。