函式的宣告,定義,和實現有什麼區別

時間 2022-04-20 20:34:58

1樓:西湖釣秋水

宣告是將乙個名稱引入程式。定義提供了乙個實體在程式中的唯一描述。宣告和定義有時是同時存在的。

如int a;

extern int b=1;

只有當extern中不存在初始化式是才是宣告。其他情況既是定義也是宣告。

定義提供了乙個實體在程式中的唯一描述。在乙個給定的定義域中重複宣告乙個符號是可以的,但是卻不能重複定義,否則將會引起編譯錯誤。但是在類中的成員函式和靜態資料成員卻是例外,雖然在類內它們都是宣告,但是也不能有多個。

定義是說明函式的返回值、名字、引數個數、引數型別等資料;而實現是實現函式。

c++是在c語言的基礎上開發的一種通用程式語言,應用廣泛。c++支援多種程式設計正規化 --物件導向程式設計、泛型程式設計和過程化程式設計。最新正式標準c++14於2014年8月18日公布。

其程式設計領域眾廣,常用於系統開發,引擎開發等應用領域,是至今為止最受廣大程式設計師受用的最強大程式語言之一,支援類:類、封裝、過載等特性!

2樓:匿名使用者

定義=實現

網頁鏈結

j**ascript函式定義表示式和函式宣告的區別

3樓:育知同創教育

什麼是 function declaration(函式宣告)?

function declaration 可以定義命名的函式變數,而無需給變數賦值。function declaration 是一種獨立的結構,不能巢狀在非功能模組中。可以將它模擬為 variable declaration(變數宣告)。

就像 variable declaration 必須以「var」開頭一樣,function declaration 必須以「function」開頭。

什麼是 function expression(函式表示式)?

function expression 將函式定義為表示式語句(通常是變數賦值)的一部分。通過 function expression 定義的函式可以是命名的,也可以是匿名的。function expression 不能以「function」開頭。

c語言中函式定義和宣告有什麼區別

4樓:匿名使用者

從c語言編譯器的角度來看,函式宣告只是一種協議,它告訴了呼叫者在呼叫這個函式之前需要給他什麼引數,一般引數是通過暫存器或者壓棧的方式傳給被呼叫函式的,具體這些引數如何使用以及返回什麼值到相應的暫存器裡返回給呼叫者則是定義所描述的。

5樓:藍宇嘉紫文

c語言中,無論是常量,變數,只有先定義才能使用。函式宣告,為了減少函式的混淆,所以要有個函式名,即宣告。函式定義是系統要求的,不定義就錯誤,而函式宣告實際上不定義也行,但為了方便和減少錯誤,人為規定要宣告。

6樓:

宣告 是告知下面的**:有這個函式可以用

定義 是對這個函式的具體實現

函式宣告的宣告與定義的區別:

7樓:出驪豔

函式的宣告與函式的定義形式上十分相似,但是二者有著本質上的不同。宣告是不開闢記憶體的,僅僅告訴編譯器,要宣告的部分存在,要預留一點空間。定義則需要開闢記憶體。

函式宣告只是對編譯系統的乙個說明: 函式宣告是對定義的函式的返回值的型別說明,以通知系統在本函式中所呼叫的函式是什麼型別。 不包含函式體(或形參) 呼叫幾次該函式就應在各個主調函式中做相應宣告 函式宣告是乙個說明語句,必須以分號結束!

在c語言中宣告和定義有什麼區別

8樓:匿名使用者

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

變數宣告:用於向程式表明變數的型別和名字。

區別:定義也是宣告,extern宣告不是定義。定義分配儲存空間,而宣告不會。

通過使用extern關鍵字宣告變數名而不定義它。 事實上它只是說明變數定義在程式的其他地方。程式中變數可以宣告多次,但只能定義一次。

只有當宣告也是定義時,宣告才可以有初始化式,因為只有定義才分配儲存空間。

例如:extern int a其中變數a是在別的檔案中定義的。前者是"定義性宣告(defining declaration)"或者稱為"定義(definition)",而後者是"引用性宣告(referncing declaration)"。

9樓:無節操的奧特曼

c語言變數的定義和宣告的不同之處:

1、變數在使用前就要被定義或者宣告;

2、在乙個程式中,變數只能定義一次,卻可以宣告多次;

3、定義分配儲存空間,而宣告不會

10樓:匿名使用者

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

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

不定義變數的宣告包括物件名、物件型別前的關鍵字extern。

拓展資料:

宣告變數

宣告變數的一種方式是使用dim語句、public語句和private語句在script中顯式宣告變數。

例如:dim degrees fahrenheit

宣告多個變數時,使用逗號分隔變數。例如:

dim top, bottom, left, right

另一種方式是通過直接在script中使用變數名這一簡單方式隱式宣告變數。這通常不是乙個好習慣,因為這樣有時會由於變數名被拼錯而導致在執行script時出現意外的結果。因此,最好使用option explicit語句顯式宣告所有變數,並將其作為script的第一條語句。

11樓:匿名使用者

#include

void print(int a[8]); // *函式原型宣告* ,當然你也可以把被調函式定

// 義在主調函式之前,這樣可以省去原型宣告void main() }

print(a); // *呼叫函式* print,這裡引數直接是陣列名稱

}void print(int a[8]) // *函式的定義* ,注意形式引數的定義形式

printf("\n");

}return;}

12樓:

從編譯原理上來說,宣告是僅僅告訴編譯器,有個某型別的變數會被使用,但是編譯器並不會為它分配任何記憶體。而定義就是分配了記憶體。

對於下面的兩句**:

void func()

對於第一行**,編譯器不會做任何事,它不會為它在棧中分配一點東西,直到第三句,a=0;時,編譯器才會將其壓入棧中。而對於int b=0;這一句,編譯器就會生成一條指令,為它賦值。如果反彙編,看到的**可能是這樣的:

push 1;

push 0;

當然,並不一定編譯器就會樣做,也有可能在宣告int a時,編譯器就會把乙個廢值入棧,到第三條再為其賦值,這要看編譯器的具體取捨,所以,宣告不一定不是定義,而定義一定是定義。

但是,下面的宣告,一定僅僅是宣告:

extern int a;

這錶時,有乙個int變數a,它一定是在另外其他地方定義的,所以編譯器此時一定不會做什麼分配記憶體的事,因為它就是宣告,僅僅表明下面的**引用了乙個符號,而這個符號是int型別的a而已。

13樓:匿名使用者

宣告就是宣告一下我用到的變數或者型別,變數或者型別的實際定義並不一定在本檔案內。

給變數分配了空間才叫做定義,否則就是宣告

比如extern int a; 是宣告,a的定義是在別處,這裡並沒有為a分配空間。

比如int a;即是定義

函式以及型別,宣告就是用函式或者型別的頭部來宣告比如 struct x;宣告 struct x{};定義比如 int fun();宣告 int fun(){}定義

14樓:

對於變數本省而言,宣告和定義沒什麼區別。比如說int i;其實等同於int i=0;所以宣告也就是定義。

對於函式而言,才是有區別的。比如宣告函式int sum();

而定義應該給出具體的演算法。int sum(int x,int y)

15樓:

定義包括宣告和使用,也有的定義就是宣告。

例如:int i;//宣告(也有叫定義)

i=2;//使用

我把兩個合起來的叫定義

16樓:

變數的宣告,其實就是乙個空的東西,在c中就相當與乙個空的指標,它什麼也沒有指向,沒有任何實際的意義,例如int a。

而變數的定義,就不一樣了,它是在記憶體中指定了一定的空間,一旦定義乙個變數,系統自動給它分配一定的記憶體空間。它是有一定的實際意義的。例如int a=10。

兩者區別:

宣告不為變數分配空間,而定義為變數分配空間因此同乙個變數的宣告可以出現多次,而只能定義一次中函式的宣告是可以重複的,但是變數卻不可以。對於變數的宣告都會分配記憶體空間,只是這部分記憶體空間裡存放的是隨機值,直到被定義之後將賦予相應的值。

c語言中函式定義和宣告有什麼區別

17樓:匿名使用者

宣告跟定義的最大區別就是宣告後面有分號,而定義沒有,再者就是宣告函式中的形參可以只寫型別,寫引數名,但是定義一定要全寫

在c語言中函式定義跟函式宣告有什麼區別?

18樓:

int  fun(int a, int b);

函式定義:

int  fun(int a,int b)宣告就象是定義的頭部,比較簡略,函式是用來呼叫的,如果函式定義部寫到呼叫的位置後面,執行到呼叫位置,

函式宣告與函式定義的區別

19樓:我是你男神

函式的宣告與函式的定義形式上十分相似,但是二者有著本質上的不同。宣告是不開闢記憶體的,僅僅告訴編譯器,要宣告的部分存在,要預留一點空間。定義則需要開闢記憶體。

函式的定義

函式的定義是乙個完整的函式單元,包含函式型別、函式名、形參及形參型別、函式體等。在程式中,函式的定義只能有一次。函式首部與花括號間不加分號。

函式的宣告

函式宣告只是對編譯系統的乙個說明:函式宣告是對定義的函式的返回值的型別說明,以通知系統在本函式中所呼叫的函式是什麼型別。不包含函式體(或形參),呼叫幾次該函式就應在各個主調函式中做相應宣告。

函式宣告是乙個說明語句,必須以分號結束。

c語言編譯系統是由上往下編譯的.一般被調函式放在主調函式後面的話,前面就該有宣告.不然c由上往下的編譯系統將無法識別。

正如變數必須先宣告後使用一樣,函式也必須在被呼叫之前先宣告,否則無法呼叫!函式的宣告可以與定義分離,要注意的是乙個函式只能被定義一次,但可以宣告多次。

函式宣告由函式返回型別、函式名和形參列表組成。形參列表必須包括形參型別,但是不必對形參命名。這三個元素被稱為函式原型,函式原型描述了函式的介面。

定義函式的程式設計師提供函式原型,使用函式的程式設計師就只需要對函式原型編輯即可。

函式原型與函式宣告的關係,函式宣告與函式定義的區別

c90 標準新增了函式原型,舊式的編譯器可能無法識別 稍後我們將介紹,如果使用這種編譯器應該怎麼做 函式原型是一種宣告形式,告知編譯器正在使用某函式,因此函式原型也被稱為函式宣告 function declaration 函式原型還指明了函式的屬性。早期的c語言支援一種更簡單的函式宣告,只需指定返回...

c語言函式宣告的位置的問題,C語言函式宣告的位置的問題

如果被引用函式在其他檔案中定義的,就在主函式外宣告 如果是在該檔案中定義的,就應當在主函式中宣告。你的幾個函式都是在乙個檔案中定義的,所以應當在main 中宣告 希望對你有用!下面的程式對add函式的定義並沒有放在主函式裡面,而是在主函式結束以後才定義的。你可以仔細看一下下面的程式。你如果把disp...

關於函式宣告的問題,為什麼沒有交換呢

swap函式傳進去的引數只是數值,不改變原位址內的資料要想改變需要傳進去位址 可以這樣寫 void swap int x,int y 這樣就可以了 你寫的函式引數是值傳遞,也就是說呼叫函式時候傳導到裡面的是數值,不是變數,所以不能交換,應該用位址傳遞 具體請你好好研究下位址傳遞和值傳遞的意義就明白了...

什麼函式把定義和宣告部分放在標頭檔案裡

1 函式宣告由函式返回型別 函式名和形參列表組成。形參列表必須包括形參型別,但是不必對形參命名。這三個元素被稱為函式原型,函式原型描述了函式的介面。定義函式的程式設計師提供函式原型,使用函式的程式設計師就只需要對函式原型編輯即可。2 比如 返回型別 函式名 引數1型別 引數1,引數2型別 引數2,例...

失蹤宣告和死亡宣告之後,被宣告的物件的財產是怎樣分配的 假如這個人又回來了,被分配的財產能追回啊

宣告失蹤後財產由利害關係人 配偶 父母 成年子女 代管。債務由利害關係人從代管的錢中拿出來清償。宣告死亡後財產按自然死亡一樣依繼承程式處理。如果死亡撤銷,那麼財產應歸還,但是財產已經依法轉讓給第3人的,第3人不必歸還,由轉讓出去的那個人給與一定補償。在司法實踐中,這種錢確實很難拿回來。如果有證據證明...