c語言調用函數原則?
一、C語言函數
1.概念:函數是一組一起執行一個任務的語句,每個c程序都必須有一個main函數,程序員可以把代碼劃分到不同的函數當中去,在邏輯上,劃分通常是根據每個函數執行一個特定的任務來進行的。c標準庫提供了可以大量調用的庫函數,比如,printf,strcmp等。
2.函數的定義
c語言中函數的一般定義如下:
return_type Function_name(Parameter List)
{
The function body
}
在c語言中,函數由一個函數頭和一個函數主體組成,組成有以下方面:
函數名稱:上面的函數名稱即為max。
函數的返回類型:一個函數可以返回一個值,這里的max函數的返回值是一個int型的整數,函數也可以沒有返回值,例如void max(),void代表該函數是一個沒有返回值的函數。
注意函返回類型的值以該函數的返回類型一致,具體表現為:
?
函數的參數:當一個函數被調用時可以向該函數的參數傳遞一個值,這個值叫做實際參數,簡稱實參,函數的參數叫形式參數,簡稱形參。當然,一個函數也可以沒有參數。
函數主體:其包括該函數里執行任務的語句,例子中的函數主體就是return a>b?a:b;
下面是一個定義一個比較大小函數的實例:
?
3.函數在定義時會有兩種情況
在main函數之前定義,程序在這種情況下不需要再main函數里聲明。
在main函數之后定義,這時需要在main函數里聲明該函數,比如,聲明Max函數時
int main()
{
int Max(int a,int b);
}
二、函數的調用
1.定義函數時會定義這個函數要做什么,然后通過調用該函數來完成定義的任務。當程序調用函數時,程序控制權會轉移給被調用的函數。被調用的函數執行已定義的任務,當函數的返回語句被執行時,或到達函數的結束括號時,會把程序控制權交還給主程序。下面是一個具體調用函數的例子:
?
2.函數的嵌套調用與遞歸
函數的嵌套調用:簡單來說就是在一個定義的函數里在調用另一個函數;
下面是一個比較三個數大小的例子:
?
函數的遞歸調用:遞歸是一種特殊的函數調用方式,簡單來說就是在一個函數里再調用它自身為遞歸調用,函數遞歸會不斷調用自己,每調用自己一次就進入新的一層,當最內層函數執行完后然后一層層向外退出。
?
以上可以看出遞歸的代碼量比較少,但遞歸會占用較大的內存,而且運行時間長,所以如果不是什么特殊問題需要用遞歸解決盡量少用遞歸。
3.函數的傳參
函數傳遞參數會有兩種方式:
1.傳值調用:該方法把參數的實際值復制給函數的形式參數。在這種情況下,修改函數內的形式參數不會影響實際參數。(該方式在函數內部不會改變實參的值),比如下面的例子可以說明這點:
?
在函數調用過程中,系統會為形參重新申請內存,函數調用完后形參會被釋放掉。
2.引用調用:通過指針傳遞方式,形參為指向實參地址的指針,當對形參的指向操作時,就相當于對實參本身進行的操作。
?