變數的宣告與定義

2022-03-27 01:33:52 字數 663 閱讀 7259

請看下邊小程式:

1

int i;   //

定義性宣告(defining declaration)或定義(definition)

2extern

int j;   //

引用性宣告(referencing declaration)

3int *k = nullptr; // 定義性宣告(defining declaration)

很明顯,上述的三個宣告是代表了宣告的兩種情況:

1. 一種是需要建立儲存空間的,稱為定義性宣告(defining declaration)或定義(definition)。如int i在宣告的時候就已經建立了儲存空間。所以當我們令i = 1實際是將1寫入i所代表的記憶體區域。

2. 另一種是不需要建立儲存空間的,稱為引用性宣告(referencing declaration)。如extern int j沒有建立儲存空間。

很容易犯錯的是認為int *k也是引用性宣告。實際上,編譯器會為指標變數分配記憶體,只是這塊記憶體的值是位址。

從本質上來看,宣告不需要分配記憶體,定義需要分配記憶體。

變數的定義與宣告

1 變數的定義 從前面的章節可以看出,程式中所有的東西幾乎都有名字。然而字面量卻是個例外,它沒有名字。那麼使用變數,我們就可以為某個值取名字了。實際上,我們是為系統記憶體中用於儲存資料的某塊空間取名字。ansi c規定 變數必須 先定義 後使用 因此當用c定義變數時,不僅需要指定變數名,而且還必須告...

變數的定義與宣告

我們在程式設計中,時時刻刻都用到變數的定義和變數的宣告,可有些時候我們對這個概念不是很清楚,知道它是怎麼用,但卻不知是怎麼一會事,下面我就簡單的把他們的區別介紹如下 望我的指點對你受益 變數的宣告有兩種情況 1 一種是需要建立儲存空間的。例如 int a 在宣告的時候就已經建立了儲存空間。2 另一種...

變數宣告與變數定義的區別

int a 定義變數但不初始化 建立乙個變數,為這個變數分配一塊int資料型別所佔記憶體空間大小的記憶體空間並命名 int a 1 定義變數並初始化 建立乙個int型別的 變數名為a的 初始值為1的 變數 int 編譯器為變數分配記憶體空間的大小 a 這塊記憶體空間的名稱 1 在這塊記憶體空間中儲存...