定義和宣告的區別

2021-10-01 17:21:04 字數 1027 閱讀 1402

2 變數定義和變數宣告的區別

3 物件定義和物件宣告的區別

關於宣告和定義有如下兩種特殊情況需要注意:

(1)宣告和定義如果變數型別不一致,將導致錯誤的解析。

// global.c

float g_f =

10.0

;// main.c

extern

int g_f;

intmain

(void

)

(2)對於結構體型別如果只有宣告而沒有定義是無法使用sizeof得到結構體型別的大小的。

// global.h

struct test

;// main.c

struct test;

intmain

(void

)

對於如下語句,哪個是變數定義?哪個是變數宣告?

int i;

// 變數定義

extern

int i;

// 變數宣告

變數定義:所謂的定義就是(編譯器)建立乙個物件,為這個物件分配一塊記憶體並給它取上乙個名字,這個名字就是我們經常說的變數名或物件名。但是要注意,這個名字和記憶體一旦匹配起來,就永久繫結(全域性變數);並且這塊記憶體的位置不能發生改變。乙個變數或物件在一定的區域內(比如函式內、全域性等)只能被定義一次,如果定義多次,編譯器會提示使用者重複定義了同乙個變數或物件。

變數宣告:

告訴編譯器,當前的名字已經匹配到一塊記憶體上了,下面的**用到變數或物件是在別的地方定義的。宣告是可以出現多次的。

告訴編譯器,當前的名字已經被預定,別的地方再也不能用它來作為變數名或物件名。

變數定義和宣告最重要的區別:變數定義建立了物件並為這個物件分配了記憶體,宣告沒有分配記憶體。

物件定義:

物件宣告:

定義和宣告的區別

之前學習c c 的時候,都沒去注意變數的定義和宣告的具體區別,也隨意將它們放在標頭檔案,今日看c primer,才發現原來變數的定義和宣告之間的區別竟然如此之大,而且區別它們兩個竟然如此重要。變數的定義用於為變數分配儲存空間,還可以為變數指定初始值。在乙個程式中,變數有且僅有乙個定義。宣告用於向程式...

變數定義和宣告的區別

所謂定義就是 編譯器 建立乙個物件,為這個物件分配一塊記憶體,並給它取上乙個名字,這個名字就是就是我們經常所說的變數名或物件名。宣告有兩重含義 1 告訴編譯器,這個名字已經匹配到一塊記憶體上,下面的 用到變數或者物件是在別的地方定義的。宣告可以出現多次。2 告訴編譯器,這個名字已經被預定了,別的地方...

定義和宣告

定義 什麼是定義?所謂的定義就是 編譯器 創造乙個物件,為這個物件分配一塊記憶體並給它取上乙個名字,這個名字就是我們常常說的定義名或物件名。但注意,這個名字一旦和這塊記憶體匹配起來 可以想象是這個名字嫁給了這塊空間,沒有要彩禮啊 它們就生死與共,終生不離不棄,並且這塊內 存的位置也不能被改變。乙個變...