C語言__函數
函數的分類
C語言中的函數就是面向對象中的"方法",C語言的函數可以大概分爲3類:
1.主函數,也就是main函數。每個程序中只能有一個、也必須有一個主函數。無論主函數寫在什麼位置,C程序總是從主函數開始執行
2.開發人員自定義的函數,可有可無,數目不限
3.C語言提供的庫函數,例如stdio.h中的輸出函數printf()和輸入函數scanf()
函數的聲明和定義
C中的函數類似於Java中的方法,但在使用上還是有區別的。
1.在Java中,每個方法的定義順序沒有限制,在前面定義的方法內部可以調用後面定義的方法
2.在標準C語言中,函數的定義順序是有講究的,默認情況下,只有後面定義的函數纔可以調用前面定義過的函數。
此條規範在標準的C編譯器環境下是需要遵循的的(不過在使用GCC編譯器的C語言就沒有此條的限制了)
3.如果想把其他函數的定義寫在main函數後面,而且main函數能正常調用這些函數,那就必須在main函數前面作一下函數的聲明。聲明的格式:函數返回類型 函數名稱 (形參數據類型 形參名稱);例如int sum (int a,int b);或者sum (int ,int)省略參數名稱。
函數聲明:
函數返回值類型 函數名 ( 形參類型 函數名稱) ——> int sum (int a, int b);
函數返回值類型 函數名 ( 形參類型 ) ——> int sum (int , int );
函數定義:
函數返回值類型 函數名 ( 形參類型 函數名稱) { 函數語句; }int sum (int a, int b)
{return a+b; }
4.在大型的C程序中,爲了分模塊進行開發,一般會將函數的聲明和定義(即實現)分別放在2個文件中,函數聲明放在.h頭文件中,函數定義放在.c源文件中。在具有主函數的文件頭使用#include預編處理<函數聲明.h>頭文件即可。但是直接預處理<函數定義.c>文件會報錯,因爲預處理僅僅是相當於將預處理的這個文件拷貝到當前文件下該預處理代碼的位置,在連接的時候會報錯標識符重複的問題。
函數的形參和實參
在定義函數時,函數名後面的()中定義的變量稱爲形式參數(形參);在調用函數時傳入的值稱爲實際參數(實參)。
如果是基本數據類型作爲函數的形參,那是簡單的值傳遞,將實參a的值賦值給了形參b,實參a和形參b是兩塊不同的空間,形參b的生命週期隨着函數的結束而被釋放。