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