C C 什麼是定義?什麼是宣告?

2021-08-31 03:26:43 字數 961 閱讀 5902

什麼是定義?什麼是宣告?它們有何區別?

舉個例子:

a)int i;

b)extern int i; (關於 extern,後面解釋)

哪個是定義?哪個是宣告?或者都是定義或者都是宣告?我所教過的學生幾乎沒有一

人能回答上這個問題。這個十分重要的概念在大學裡從來沒有被提起過!

什麼是定義:所謂的定義就是(編譯器)建立乙個物件,為這個物件分配一塊記憶體並給它

取上乙個名字,這個名字就是我們經常所說的變數名或物件名。但注意,這個名字一旦和

這塊記憶體匹配起來(可以想象是這個名字嫁給了這塊空間,沒有要彩禮啊。 ^_^),它們就同

生共死,終生不離不棄。並且這塊記憶體的位置也不能被改變。乙個變數或物件在一定的區

域內(比如函式內,全域性等)只能被定義一次,如果定義多次,編譯器會提示你重複定義

同乙個變數或物件。

什麼是宣告:有兩重含義,如下:

第一重含義:告訴編譯器,這個名字已經匹配到一塊記憶體上了(伊人已嫁,吾將何去何

從?何以解憂,唯有稀粥),下面的**用到變數或物件是在別的地方定義的。宣告可以出

現多次。

第二重含義:告訴編譯器,我這個名字我先預定了,別的地方再也不能用它來作為變數

名或物件名。比如你在圖書館自習室的某個座位上放了一本書,表明這個座位已經有人預

訂,別人再也不允許使用這個座位。其實這個時候你本人並沒有坐在這個座位上。這種聲

明最典型的例子就是函式引數的宣告,例如:

void fun(int i, char c);

好,這樣一解釋,我們可以很清楚的判斷:a)是定義; b)是宣告。

那他們的區別也很清晰了。

記住,定義宣告最重要的區別:定義建立了物件並為這個物件分配了記憶體,宣告沒有分配記憶體(乙個抱伊人,乙個喝稀粥。 ^_^)。

什麼是定義,什麼是宣告。

定義和宣告有什麼區別 舉乙個例子 a int a b extern int a 那個是定義,那個是宣告呢?或者都是定義,又或者都是宣告。這個問題,在我工作中和學習中,從來沒有被教過和問過。在計算機中,到底什麼是定義,什麼是宣告,定義和宣告的區別歸根到底在哪?先來說一下什麼是定義 所謂定義就是建立乙個...

什麼是CC攻擊?

攻擊者借助 伺服器生成指向受害主機的合法請求,實現ddos和偽裝就叫 cc challengecollapsar cc主要是用來攻擊頁面的。大家都有這樣的經歷,就是在訪問論壇時,如果這個論壇比較大,訪問的人比較多,開啟頁面的速度會比較慢,訪問的人越多,論壇的頁面越多,資料庫壓力就越大,被訪問的頻率也...

什麼是c c 編譯

gnu compiler collection的縮寫,一開始是c語言的編譯器,但現今可以支援多種語言的編譯工作,也支援了多個硬體平台的編譯。總而言之,主流的c語言編譯器就是這個gcc了。這裡的gnu是乙個軟體專案名稱,開發了很多的應用程式。對於.c檔案gcc當做c語言處理,g 是gcc的c 編譯器 ...