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

2021-07-22 06:25:17 字數 783 閱讀 9782

定義和宣告有什麼區別:

舉乙個例子:

a),int a;b),extern int a;

那個是定義,那個是宣告呢?或者都是定義,又或者都是宣告。

這個問題,在我工作中和學習中,從來沒有被教過和問過。

在計算機中,到底什麼是定義,什麼是宣告,定義和宣告的區別歸根到底在哪?

先來說一下什麼是定義:

所謂定義就是建立乙個物件,為這個物件分配一塊記憶體,同時給這塊記憶體取乙個名字,這個名字就是我們常說的物件名或變數名。但是注意,這個名字一旦和這塊記憶體關聯起來,他們就是乙個整體,生死相依,不離不棄。並且這塊記憶體的位置也不能被改變。乙個物件或者變數,在乙個區域內(全域性,檔案,函式,迴圈等)只能被定義一次,如果定義多次,編譯器會提示你重複定義同乙個變數或物件。

再來說一下宣告:

第一層含義:告訴這個編譯器,這個名字已經匹配到一塊記憶體上路了,後面的**用變數火女物件實在別的地方定義的。定義是原件,原件唯一有效,那麼宣告就像影印件,可以重複列印,可以多次宣告。

第二層含義:告訴編譯器,這個變數或者物件的名字已經被占用了,別的地方,不能在使用這個名字作為其他的變數或者物件名;比如在電影票,你買了一張票後提示他人該位置已經被其他上占用了。

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

int func(int a, char b);

這一樣一疏理後,應該能夠區分出:a是定義,b是宣告。

那麼到底什麼是定義和宣告的根本區別:是記憶體。

定義建立物件,並為這個物件分配了記憶體;而宣告只是將與記憶體關聯的物件名進行外域可見性的擴充,看不到,可以繼續宣告。

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

什麼是定義?什麼是宣告?它們有何區別?舉個例子 a int i b extern int i 關於 extern,後面解釋 哪個是定義?哪個是宣告?或者都是定義或者都是宣告?我所教過的學生幾乎沒有一 人能回答上這個問題。這個十分重要的概念在大學裡從來沒有被提起過!什麼是定義 所謂的定義就是 編譯器 ...

什麼是宣告式事務?什麼是程式設計式事務?

程式設計式事務 當我們的專案中沒有整合進spring 僅僅使用hibernate的話 都會自己進行事務的管理,例如 try catch exception e finally 上面這種事務的管理方法是我們在使用hibernate的時候管理事務的一種方法,可以簡單的理解為 通過自己程式設計來實現事務的...

在C語言中什麼是定義?什麼是宣告?它們有何區別

在c語言中什麼是定義?什麼是宣告?它們有何區別?舉個例子 a int i b extern int i 什麼是定義 所謂的定義就是 編譯器 建立乙個物件,為這個物件分配一塊記憶體並給它取上乙個名字,這個名字就是我們經常所說的變數名或物件名。但注意,這個名字一旦和這塊記憶體匹配起來 可以想象是這個名字...