上一個(gè)例程中在進(jìn)行函數(shù)調(diào)用的時(shí)候,不需要任何參數(shù)傳遞,所以函數(shù)定義和調(diào)用時(shí)括號(hào)內(nèi)都是空的,但是更多的時(shí)候我們需要在主調(diào)函數(shù)和被調(diào)用函數(shù)之間傳遞參數(shù)。在調(diào)用一個(gè)有參數(shù)的函數(shù)時(shí),函數(shù)名后邊括號(hào)中的參數(shù)叫做實(shí)際參數(shù),簡(jiǎn)稱實(shí)參
。而被調(diào)用的函數(shù)在進(jìn)行定義時(shí),括號(hào)里的參數(shù)叫做形式參數(shù),簡(jiǎn)稱形參
。我們用個(gè)簡(jiǎn)單程序例子做說(shuō)明。
unsigned char add(unsigned char x, unsigned char y); //函數(shù)聲明
void main(){
unsigned char a = 1;
unsigned char b = 2;
unsigned char c = 0;
//調(diào)用時(shí),a 和 b 就是實(shí)參,把函數(shù)的返回值賦給 c
//執(zhí)行完后,c 的值就是 3
c = add(a, b);
while(1);
}
//函數(shù)定義,這里括號(hào)中的 x 和 y 就是形參
unsigned char add(unsigned char x, unsigned char y){
unsigned char z = 0;
z = x + y;
return z; //返回值 z 的類型就是函數(shù) add 的類型
}
這個(gè)演示程序雖然很簡(jiǎn)單,但是函數(shù)調(diào)用的全部?jī)?nèi)容都囊括在內(nèi)了。主調(diào)函數(shù) main 和被調(diào)用函數(shù) add 之間的數(shù)據(jù)通過(guò)形參和實(shí)參發(fā)生了傳遞關(guān)系,而函數(shù)運(yùn)算完后把值傳遞給了變量 c,函數(shù)只要不是 void 類型,就都會(huì)有返回值,返回值類型就是函數(shù)的類型。
關(guān)于形參和實(shí)參,還有以下幾點(diǎn)需要注意: