當前位置:才華齋>計算機>C語言>

C語言函式的宣告以及函式原型

C語言 閱讀(1.57W)

C語言把括號、賦值、強制型別轉換等都作為運算子處理。那麼大家知道C語言函式的宣告以及函式原型是什麼呢?下面來看看!

C語言函式的宣告以及函式原型

C語言程式碼由上到下依次執行,原則上函式定義要出現在函式呼叫之前,否則就會報錯。但在實際開發中,經常會在函式定義之前使用它們,這個時候就需要提前宣告。

所謂宣告(Declaration),就是告訴編譯器我要使用這個函式,你現在沒有找到它的定義不要緊,請不要報錯,稍後我會把定義補上。

函式宣告的格式非常簡單,相當於去掉函式定義中的函式體再加上分號;,如下所示:

返回值型別 函式名( 型別 形參, 型別 形參… );

也可以不寫形參,只寫資料型別:

返回值型別 函式名( 型別, 型別…);

函式宣告給出了函式名、返回值型別、引數列表(引數型別)等與該函式有關的資訊,稱為函式原型(Function Prototype)。

函式原型的作用是告訴編譯器與該函式有關的資訊,讓編譯器知道函式的存在,以及存在的形式,即使函式暫時沒有定義,編譯器也知道如何使用它。

有了函式宣告,函式定義就可以出現在任何地方了,甚至是其他檔案、靜態連結庫、動態連結庫等。

上節給出了計算sum = 1! + 2! + 3! + ... + (n-1)! + n!的程式碼,這節我們稍作修改,將 factorial() 和 sum() 函式的定義放到 main() 函式後面,請看下面的程式碼:

#include // 函式宣告long factorial(int n); //也可以寫作 long factorial(int);long sum(long n); //也可以寫作 long sum(long);int main(){ printf("1!+2!+...+9!+10! = %ld", 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()、get) 等函式要引入 stdio.h 這個標頭檔案,很多初學者認為 stdio.h 中包含了函式定義(也就是函式體),只要有了標頭檔案程式就能執行。其實不然,標頭檔案中包含的都是函式宣告,而不是函式定義,函式定義都在系統庫中,只有標頭檔案沒有系統庫在連結時就會報錯,程式根本不能執行。

最後再補充一點,函式原型給出了使用該函式的'所有細節,當我們不知道如何使用某個函式時,需要查詢的是它的原型,而不是它的定義,我們往往不關心它的實現。