C語言函數宣告的格式是由去掉函數定義中的函數體再加上分號組成,目的是為了防止程式在函數未定義之前使用了函數而導致程式報錯。
C語言程式碼由上到下依序執行,原則上函數定義要出現在函數呼叫之前,否則就會報錯。但在實際開發中,經常在函數定義之前使用它們,這個時候就需要事先聲明。接下來在文章中將為大家具體介紹有關函數宣告的知識,具有一定的參考作用,希望對大家有幫助。
【推薦課程:C語言教學】
#函數宣告
所謂聲明(Declaration),就是告訴編譯器我將要使用這個函數,雖然現在沒有找到它的定義不要緊,但是請不要報錯稍後會把定義補上。
函數宣告的格式非常簡單,相當於去掉函數定義中的函數體再加上分號;,如下所示:
返回值类型 函数名( 类型 形参, 类型 形参… );
也可以不寫形參,只寫資料型別:
返回值类型 函数名( 类型, 类型…);
函數宣告給出了函數名稱、傳回值類型、參數列表(參數類型)等與該函數有關的信息,稱為函數原型(Function Prototype)。
函數原型的作用是告訴編譯器與函數有關的信息,讓編譯器知道函數的存在,以及存在的形式,即使函數暫時沒有定義,編譯器也知道如何使用它。
有了函數聲明,函數定義就可以出現在任何地方了,甚至是其他文件、靜態連結庫、動態連結庫等。
範例:
#include <stdio.h> // 函数声明 long factorial(int n); //也可以写作 long factorial(int); long sum(long n); //也可以写作 long sum(long); int main(){ printf("1!+2!+...+9!+10! = %ld\n", sum(10));return 0; } //求阶乘 long factorial(int n) { int i; long result=1; for(i=1; i<=n; i++){ result *= i; } return result; } // 求累加的和 long sum(long n) {int i; long result = 0; for(i=1; i<=n; i++) { //嵌套调用 result += factorial(i); } return result; }
運行結果為:1! 2! ... 9! 10! = 4037913
我們知道,使用printf( )、puts()、scanf()、getchar() 等函數要引入stdio.h 這個頭文件,很多初學者認為stdio.h 中包含了函數定義(也就是函數體),只要有了頭檔程式就能運行。其實不然,頭檔包含的都是函數聲明,而不是函數定義,函數定義都在系統函式庫中,只有頭檔沒有系統函式庫在連結時就會報錯,程式根本不能運作。
總結:以上就是這篇文章的全部內容了,希望對大家有幫助。
以上是如何理解c語言函數聲明的詳細內容。更多資訊請關注PHP中文網其他相關文章!