為什麼在c 中函式要先宣告然後再定義呢

2021-08-26 05:07:45 字數 2351 閱讀 6338

1樓:

1、函式的作用域只是從定義的地方開始的。也就是說,在函式定義行之上,是無法使用該函式的。而把函式的定義都放在主函式之前的話,程式會變得不清楚。

所以在使用前只需用一行宣告一下就可以了。

2、也許函式並不都是在一個檔案裡使用,這時候,如果再定義一遍,不僅顯得羅嗦,而且使程式的維護變得麻煩,如果修改這個函式的話,需要修改每個定義。

所以可以把函式宣告放在一個標頭檔案中,使用的時候,包含這個標頭檔案就可以了。

3、有時候,自己寫的函式需要給別人用,比如商業用途。這樣的話,不能將整個函式的實現都給對方,這就需要生成一個庫檔案,而將函式宣告放在標頭檔案中來給對方使用。

4、有時候需要用函式宣告來重新宣告函式,即使前面已經宣告過。這樣做可以設定新的預設引數,也可以是為了遮蔽作用域外同名的函式宣告。

2樓:

你也可以不宣告,直接定義。但:

1、函式的作用域只是從定義的地方開始的。也就是說,在函式定義行之上,你是無法使用該函式的。而把函式的定義都放在主函式之前的話,程式會變得不清楚。

所以在使用前只需用一行宣告一下就可以了,明瞭。

2、也許函式並不都是在一個檔案裡使用,這時候,如果再定義一遍,不僅顯得羅嗦,而且使程式的維護變得麻煩,如果修改這個函式的話,需要修改每個定義。

所以可以把函式宣告放在一個標頭檔案中,使用的時候,包含這個標頭檔案就可以了。

3、有時候,自己寫的函式需要給別人用,比如商業用途。這樣的話,不能將整個函式的實現都給對方,這就需要生成一個庫檔案,而將函式宣告放在標頭檔案中來給對方使用。

4、有時候需要用函式宣告來重新宣告函式,即使前面已經宣告過。這樣做可以設定新的預設引數,也可以是為了遮蔽作用域外同名的函式宣告。

3樓:匿名使用者

這是最好的習慣,為什麼?因為這樣就是讓編譯器知道你下面有什麼函式「出場」,如果你不先宣告,一般不會產生錯誤,但有可能在一個函式呼叫另一個時,由於先後出現順序不同引起出錯,其實「編寫上」並沒錯。

還有就是在大型聯合程式設計時,一般都將子函式群放在main程式後面方便閱讀。這樣前邊要加上這些函式的宣告。

宣告不宣告執行速度上沒變化

為什麼c++語言不允許在一個函式的定義中再定義另一個函式? 舉個例子說明,謝謝

4樓:

//標頭檔案test.h

void f();

//原始檔test.cpp

#include"test.h"

void f()

提示找不到函式g().

一般函式的宣告與定義放

在不同檔案中,宣告的標頭檔案中只有巢狀定義的外層函式,巢狀在函式f中的函式是找不著的。。。

5樓:匿名使用者

c++中允許函式的巢狀呼叫,但不允許函式的巢狀定義,例如:

#include

int swpint(int *a,int *b)void main()

swpint(&e,&f);

cout<

}error c2601: 'swpint' : local function definitions are illegal

6樓:_白龍子

編語言的人就這麼設計啊,你如果會編的話自己設計一個語言就能作到在一個函式的定義中再定義另一個函式了

c++中如果要用的類定義在使用之後,該怎樣宣告?

7樓:匿名使用者

這個宣告,bai有時稱為前向宣告du(forward declaraton),在宣告zhi之後、定義之dao前,類a是一內個不容完全型別(incompete type),即已知a是一個型別,但不知道包含哪些成員。

不完全型別(incomplete type)只能以有限方式使用。不能定義該型別的物件。不完全型別只能用於定義指向該型別的指標及引用,或者用於宣告(而不是定義)使用該型別作為形參型別或返回型別的函式。

#include

#include

#include

class a;

class b

};class a

a(int a, int b )

};int main()

8樓:匿名使用者

1、類體內包含有數bai據成員

du和成員函式。還可以包zhi含另一個類的物件和dao指向物件的內指標。

2、在類體內容允許對成員函式進行定義,但是不允許對資料成員進行初始化。

3、一般地,在類體內先說明公有函式,再說明私有函式。

4、習慣於將類的定義的說明部分或整個定義部分放在一個標頭檔案中。這樣作是為了以後引用起來比較方便。

c語言後定義函式前面在函式原型中為什麼要加

傳遞引數為陣列或者指標。形參都是以指標形式表示。你的例,第一個引數的實參為int型,第二個的實參可以是int陣列名 第一元素地址 int型指標 指標的值就是地址 int值的地址 x int 是一個型別 就好比如char也是一個型別。double也是一個型別。int型別 int 型別這是兩個型別 加 ...

CString在C 中要導什麼標頭檔案

1 開啟dev c 軟體,單擊檔案選單中的儲存按鈕。2 將編輯好的程式,儲存為c語言格式。3 標頭檔案處在程式的最上方。4 書寫標頭檔案時,先輸入 號。5 接著,書寫英文單詞include,include的意思是包括。6 然後,書寫尖括號,用來引用。7 最後,在尖括號中,書寫引用檔名。8 注意引用檔...

在高等數學中,函式 函式的極限,是什麼 為什麼極限的定義要這樣表示

難點。一言難盡。當自變數x無限趨近一個定值x0時,函式f x 無限趨近一個定值a。這個定值a就是極限。為了用數學語言 量化 上述兩個無限過程,數學家們絞盡腦汁,經歷了漫長的歲月,才有了閃爍著人類思維光芒的 定義 無論您任意給定的正數 多麼小,總存在很小的正數 當自變數x與定數x0距離小於 時,總有函...