c語言中不能在函式裡面宣告函式嗎

時間 2021-12-19 11:39:03

1樓:迷路的國王

你這個問題看似簡單,其實涉及到了函式的宣告與定義,以及c語言的標準規範具體編譯器的實現問題。

從標準規範來看:

c語言允許函式裡宣告函式,但是不建議這麼寫,因為不利於多文件的組織。

c語言禁止函式裡定義函式,但是個別編譯器卻沒遵循標準。

c語言的標準編譯器的實現並不是完全統一,為了可移植性,建議一切都按c語言標準中推薦的做法來寫。

我還寫了個**附帶注釋,程式在cfree這個ide(內建gcc編譯器)上執行是通過的,但是在vc++6上就可能通不過了,主要是編譯器具體實現不同。

#include

//函式外

//宣告,允許,推薦的做法

int add1(int a, int b);

int main(int argc, char *argv)

//c99標準中,呼叫函式之前,必須保證宣告已出現過

printf("%d\n", add1(1,2));

printf("%d\n", add2(2,3));

printf("%d\n", add3(3,4));

return 0;

}//函式外

//定義,允許

int add1(int a, int b)

//定義,允許

int add2(int a, int b)

2樓:天雨下凡

c語言中可以在函式裡面宣告函式,但是不能在函式裡面定義函式。

c語言中不能再函式內定義函式嗎?

3樓:匿名使用者

不可以,即使主函式中也不可以,c語言只允許在函式中宣告和巢狀呼叫。

c語言中是不允許作巢狀的函式定義。因此程式中各個函式之間是平行的,不存在上一級函式和下一級函式的問題,這樣是為了簡化c語言編譯器的邏輯性。

4樓:

主函式裡怎麼能定義乙個函式呢?

主函式裡最多也 只能宣告乙個函式而已。

要區分什麼是定義,什麼是宣告。一般的c語言的書都會介紹的。

5樓:神吶

函式的呼叫可以巢狀,定義不可以巢狀。主函式不能視為一般函式看待,它和其他函式有很大的區別。

6樓:不離不棄芹

函式不能巢狀定義的,只能在外面定義然後在主函式呼叫

c語言中在乙個函式中可以宣告另乙個函式嗎(不是定義)?在main裡面宣告也可以嗎?

7樓:眺穴

可以哦,我試了一下,可以在main()函式中宣告函式,在main函式外定義。但是不能將乙個函式宣告和定義都放在某個函式中,這樣會出錯,還有就是在函式中宣告另乙個函式時,要注意必須在被呼叫之前宣告。

8樓:匿名使用者

可以的給你乙個例子,vc執行通過:

#include

int main()

void fun()

c語言中 宣告子函式和沒有宣告子函式有什麼區別

9樓:12345額時代

子函式在宣告後可以先呼叫,後定義;避免編譯器猜資料。操作方法如下:

1、函式的宣告,函式有兩種型別,一種是有返回值的,前面用int float double char 來定義,如int f(int n);前面的int就是返回值型別。

2、 如果函式不需要返回值,那麼就用void來寫在前面,如void f(int n);注意宣告後面加分號。

3、 函式的定義,有返回值的函式一般就是 int f(int) 。注意f()沒有分號。

4、沒有返回值的函式結構為void f(){函式內容,發f(int n)後面也沒有分號。

5、看一下函式的呼叫,有返回值的一般語言定義乙個變數如c=f(n)。

10樓:匿名使用者

因為,程式的編譯都是從main函式開始的。所以當要呼叫的子函式在main 函式之前定義時,就不需要再在main函式中宣告子函式了,如果要呼叫的子函式在main函式後面時,就必須在main函式中宣告,否則,編譯將出現錯誤。

如果,怕忘了,在main函式中宣告子函式,建議你養成在main函式前定義子函式的習慣,計算機等級考試裡的子函式,也都是在main函式之前定義的。

希望對你有幫助!

11樓:明月看盡滄桑

子函式在宣告後可以先呼叫,後定義;避免編譯器猜資料。如下:

12樓:匿名使用者

基本上來說是沒有多大的區別的。

區別可能就是在你的呼叫函式在你的被呼叫函式之前出現的。那麼這個時候你要是不宣告被呼叫函式的話,就會報錯的。然後你在前面加上函式的宣告就沒有問題了。

但是如果你的被呼叫函式在你的呼叫函式之前出現呢,即實現,那麼這個時候就是不會有什麼影響的。

比如說:函式a是呼叫函式,函式b是被呼叫函式可以這樣寫

void a()

void b()

如果這樣寫的話,那麼就是不會有什麼問題的。

但是如果像下面這樣寫的話,就會有問題了。

voidb()

void a()

//程式除錯的時候會報錯的。

13樓:匿名使用者

子函式與主函式之間的順序需要發生改變而已.

主函式在前,必須宣告,要不主函式不能呼叫。

主函式在後,就不必宣告。

請問C語言中函式定義,函式宣告和函式呼叫的區別

函式宣告指函式原型宣告,只有函式名,函式型別,引數個數和型別,無函式體。一般放在主函式前。逗號結尾。函式定義,除上述外,去掉結尾逗號,加函式體。可放在main函式後面,也可放在main函式前面。放在main函式前面則不要寫函式原型宣告。 雲澹楓卿 函式宣告格式如 int max int 函式呼叫是你...

C語言中函式的定義格式是什麼,函式原型宣告的語法格式

天雲一號 函式定義就是規定函式的格式與功能。函式宣告就是在函式呼叫之前進行的一種說明。下面舉例說明兩者的語法格式 include int fun int a,int b 函式的宣告void main 下面的fun函式就是函式的定義 int fun int a,int b 注 如果被調函式 上例中為f...

c語言中函式指標用法,C語言中函式指標用法

函式在記憶體中有一個物理位置,而這個位置是可以賦給一個指標的。一零點函式的地址就是該函式的入口點。因此,函式指標可被用來呼叫一個函式。函式的地址是用不帶任何括號或引數的函式名來得到的。這很類似於陣列地址的得到方法,即,在只有陣列名而無下標是就得到陣列地址。怎樣說明一個函式指標變數呢 為了說明一個變數...