什么是聲明:有兩重含義,如下:
創(chuàng)新互聯(lián)公司專業(yè)提供成都主機托管四川主機托管成都服務(wù)器托管四川服務(wù)器托管,支持按月付款!我們的承諾:貴族品質(zhì)、平民價格,機房位于中國電信/網(wǎng)通/移動機房,中國電信云錦天府服務(wù)有保障!
第一重含義:告訴編譯器,這個名字已經(jīng)匹配到一塊內(nèi)存上了(伊人已嫁,吾將何去何
從?何以解憂,唯有稀粥),下面的代碼用到變量或?qū)ο笫窃趧e的地方定義的.聲明可以出
現(xiàn)多次.
第二重含義:告訴編譯器,我這個名字我先預(yù)定了,別的地方再也不能用它來作為變量
名或?qū)ο竺?比如你在圖書館自習(xí)室的某個座位上放了一本書,表明這個座位已經(jīng)有人預(yù)
訂,別人再也不允許使用這個座位.其實這個時候你本人并沒有坐在這個座位上.這種聲
明最典型的例子就是函數(shù)參數(shù)的聲明,例如:
void fun(int i, char c);好,這樣一解釋,我們可以很清楚的判斷:a)是定義;b)是聲明.
就是告訴編譯器,這個函數(shù)已經(jīng)存在,和這個函數(shù)具體是什么格式的,名稱是什么,返回值是什么,數(shù)據(jù)個數(shù)和類型分別是什么,以后在用到這個函數(shù)的時候編譯器就按照這個聲明的格式來檢查函數(shù)的使用是否正確
就是告訴編譯器函數(shù)的類型,名稱,使用的參數(shù)的類型。
就是告訴編譯器將要調(diào)用此函數(shù)。
就是告訴編譯器將要調(diào)用此函數(shù)。
就是告訴編譯器將要調(diào)用此函數(shù)。
函數(shù)聲明是讓代碼調(diào)用點知道按照什么格式來調(diào)用函數(shù)。
(函數(shù)參數(shù)列表是什么,返回值是什么。)
否則調(diào)用點無法確知調(diào)用函數(shù)的格式。
(注:在C里也可以無函數(shù)聲明就調(diào)用,那樣會在程序鏈接的時候做調(diào)用匹配檢查。但這非常非常不推薦這樣做。
C++則完全屏蔽這種可能,如果出現(xiàn)未聲明的調(diào)用,則直接編譯報錯。)
舉個例子來說明吧
void foo();
int main()
{
foo();
}
void foo()
{
;
}
以上代碼中,第一句就是所謂函數(shù)聲明。
其實直接用函數(shù)定義也就是void foo(){;}替代第一句也是可以的,不過函數(shù)的聲明讓你可以在定義它的代碼段之前使用它。
比如以上的例子中,在編譯進行到main函數(shù)中的foo調(diào)用的時候,foo函數(shù)還是沒有定義的,但我們通過foo的聲明告訴了編譯器:foo是一個函數(shù)的名字,這個函數(shù)有著怎樣怎樣的參數(shù)表等等。