C語言中定義和宣告的一些差別

2021-08-09 09:19:26 字數 876 閱讀 7638

定義:所謂的定義就是(編譯器)建立乙個物件,為這個物件分配一塊記憶體並給它取上乙個名字,這個名字就是我們經常所說的變數名或物件名。乙個變數或物件在一定的區域內(比如函式內,全域性等)只能被定義一次,如果定義多次,編譯器會提示你重複定義同乙個變數或物件。

變數的定義用於為變數分配儲存空間,還可以為變數指定初始值。在乙個程式中,變數有且僅有乙個定義。

宣告:告訴編譯器,我這個名字我先預定了,別的地方再也不能用它來作為變數名或物件名。宣告可以出現多次。

宣告用於向程式表明變數的型別和名字,定義包括宣告:當定義變數時宣告了它的型別和名字。可以通過使用extern關鍵字宣告變數名而不定義它。

附:extern:在原始檔a裡定義的函式,在其它原始檔裡是看不見的(即不能訪問)。為了在原始檔b裡能呼叫這個函式,應該在b的頭部加上乙個外部宣告:

extern 函式原型;

這樣,在原始檔b裡也可以呼叫那個函式了。 在a裡是定義,在b裡是宣告。乙個函式只能(也必須)在乙個原始檔裡被定義,但是可以在其它多個原始檔裡被宣告。

區別:1.定義引起儲存分配,是真正產生那個實體。而宣告並不引起儲存分配。

2.宣告變數時不會分配記憶體,定義變數時才會分配記憶體。區域性變數的宣告即是定義。

3.全域性變數只能定義一次,可以宣告多次,在全域性變數不可見的地方但又想使用就得進行宣告。函式和變數一樣,使用前一定要先宣告或者定義,定義本身也是一次宣告。

4.例:int a它既是宣告,同時又是定義。然而對於extern a來講它只是宣告不是定義。一般的情況下我們常常這樣敘述,把建立空間的宣告稱之為」定義」,而把不需要建立儲存空間稱之為」宣告」.很明顯我們在這裡指的宣告是範圍比較窄的,也就是說非定義性質的宣告。

C語言中的定義和宣告

定義 指的是在 中定義乙個變數 函式,定義的最顯著的乙個特徵是,執行定義後,編譯器會在記憶體中分配一塊記憶體給所定義的變數或函式,如執行int a b,c 0 都會在記憶體中分配一定的空間以存放這幾個變數。宣告 宣告的目的是在於告訴編譯器,系統中已經有這麼乙個名字是aaa的變數或者函式了,我要用的就...

變數定義和宣告的差別(整理)

變數的宣告有兩種情況 1 一種是須要建立儲存空間的。比如 int a 在宣告的時候就已經建立了儲存空間。2 還有一種是不須要建立儲存空間的。比如 extern int a 當中變數a是在別的檔案裡定義的。宣告是向編譯器介紹名字 識別符號。它告訴編譯器 這個函式或變數在某處可找到,它的模樣象什麼 而定...

變數定義和宣告的差別(整理)

變數的宣告有兩種情況 1 一種是須要建立儲存空間的。比如 int a 在宣告的時候就已經建立了儲存空間。2 還有一種是不須要建立儲存空間的。比如 extern int a 當中變數a是在別的檔案裡定義的。宣告是向編譯器介紹名字 識別符號。它告訴編譯器 這個函式或變數在某處可找到,它的模樣象什麼 而定...