㈠ c語言里聲明是什麼意思
什麼是聲明:有兩重含義,如下:
第一重含義:告訴編譯器,這個名字已經匹配到一塊內存上了(伊人已嫁,吾將何去何
從?何以解憂,唯有稀粥),下面的代碼用到變數或對象是在別的地方定義的.聲明可以出
現多次.
第二重含義:告訴編譯器,我這個名字我先預定了,別的地方再也不能用它來作為變數
名或對象名.比如你在圖書館自習室的某個座位上放了一本書,表明這個座位已經有人預
訂,別人再也不允許使用這個座位.其實這個時候你本人並沒有坐在這個座位上.這種聲
明最典型的例子就是函數參數的聲明,例如:
void fun(int i, char c);好,這樣一解釋,我們可以很清楚的判斷:a)是定義;b)是聲明.
㈡ 在C語言中,什麼是聲明、定義、初始化有什麼區別
1.聲明和定義是針對函數的概念:
包含函數實現的叫做函數的定義,一般位於.c文件中,如:
int func(int a){return a+1;}
不包含函數實現,只包含函數名的叫做函數的聲明,一般位於.h文件中。如:
int func(int a);
2.定義和初始化是針對變數的概念:
int a;就是變數的定義
a=0;就是變數的初始化
㈢ c語言的定義與聲明是什麼
聲明相當於普通的聲明:它所說明的並非自身,而是描述替他地方的創建的對象,可以多次出現。
定義相當於特殊的聲明:它為對象分配內存,只能出現一次。
比如說,int a[100]; 這就是一個定義,分配了內存空間。在別的文件中要用它時,可以用extern int a[];做聲明,表明它在別處定義和分配存儲空間的。
㈣ c語言里的聲明有什麼用(詳解必采)
c語言中聲明和定義的區別
之前一直搞不清楚聲明和定義的區別,直到看了stackoverflow上的一篇文章。看完之後,頗有所得,整理如下。希望能幫到還在困惑的童鞋。
方法/步驟
聲明(declaration )指定了一個變數的標識符,用來描述變數的類型,是類型還是對象,或者函數等。聲明,用於編譯器(compiler)識別變數名所引用的實體。以下這些就是聲明:
extern int bar;
extern int g(int, int);
double f(int, double); // 對於函數聲明,extern關鍵字是可以省略的。
class foo; // 類的聲明,前面是不能加class的。
定義是對聲明的實現或者實例化。連接器(linker)需要它(定義)來引用內存實體。與上面的聲明相應的定義如下:
int bar;
int g(int lhs, int rhs) {return lhs*rhs;}
double f(int i, double d) {return i+d;}
class foo {};// foo 這里已經擁有自己的內存了,對照上面兩個函數,你就應該明白{}的用處了吧?
無論如何,定義 操作是只能做一次的。如果你忘了定義一些你已經聲明過的變數,或者在某些地方被引用到的變數,那麼,連接器linker是不知道這些引用該連接到那塊內存上的。然後就會報missing symbols 這樣的錯誤。如果你定義變數超過一次,連接器是不知道把引用和哪塊內存連接,然後就會報 plicated symbols這樣的錯誤了。以上的symbols其實就是指定義後的變數名,也就是其標識的內存塊。
4
總結
如果只是為了給編譯器提供引用標識,讓編譯器能夠知道有這個引用,能用這個引用來引用某個實體(但沒有為實體分配具體內存塊的過程)是為聲明。如果該操作能夠為引用指定一塊特定的內存,使得該引用能夠在link階段唯一正確地對應一塊內存,這樣的操作是為定義。
5
聲明是為了讓編譯器正確處理對聲明變數和函數的引用。定義是一個給變數分配內存的過程,或者是說明一個函數具體干什麼用。