1. 程式人生 > >函式(定義函式,呼叫函式)

函式(定義函式,呼叫函式)

一,定義函式
1.定義函式的內容
(1)指定函式的名字,以便以後按名呼叫
(2)指定函式的型別,即函式返回值的型別
(3)指定函式的引數的名字和型別,以便在呼叫函式時向它們傳遞資料。對無參函式不需要這項。
(4)指定函式的功能。在函式體中解決。
2.定義無參函式
例:void print_star( ) //定義print_star(函式名)函式
{
printf("***"); //函式體(包含宣告部分和語句部分)
}
void為型別名,指定函式的型別,即指定函式帶回來的值的型別;void型別表示沒有函式值。
3.定義有參函式
例:int max(int x,int y) //型別名 函式名(形式引數表列)
{
int z; //宣告部分
z=x>y?x:y; //執行語句部分
return 0;
}
花括號內是函式體
4.定義空函式
例:void dummy( ) //型別名 函式名( )
{ } //{ }
函式體是空的,呼叫此函式時,什麼工作也不做,沒有任何實際作用。
在編寫程式的開始階段,可以在將來準備擴充功能的地方寫上一個空函式。

二,呼叫函式
print_star( ); //呼叫無參函式
c=max(a,b); //呼叫有參函式
1.函式呼叫的一般形式為:函式名(實參表列)
呼叫無參函式,則“實參函式”可省,括號不能省。
呼叫方式:
(1)函式呼叫語句:把函式呼叫單獨作為一個語句,不要求函式帶回值。
(2)函式表示式:如"c=max(a,b);",max(a,b)是一個函式呼叫,它是賦值表示式中的一部分,要求函式帶回一個確定的值以參加表示式的運算。例:
c=2*max(a,b);
(3)函式引數:函式呼叫作為另一個函式呼叫時的實參。
例:printf("%d",max(a,b));
也是把max(a,b)作為printf函式的一個引數。
2.函式呼叫時的資料傳遞
(1)呼叫有參函式時
在定義函式時函式名後面括號中的變數名稱為"形式引數"。
在主調函式中呼叫一個函式時,函式名後面括號中的引數稱為"實際引數"。
(2)實參和形參間的資料傳遞
例:輸入兩個整數,要求輸出其中值較大者。要求用函式找到大數。
#include <stdio.h>
int main()
{
int max(int x,int y);//對max函式的宣告
int a,b,c;
printf(“please enter two integer numbers:”);//提示輸入資料
scanf("%d,%d",&a,&b);//輸入兩個整數
c=max(a,b);//呼叫max函式,有兩個實參。大數賦給變數c
printf(“max is %d\n”,c);//輸出大數c
return 0;
}
int max(int x,int y) //定義max函式,有兩個引數
{
int z; //定義臨時變數z
z=x>y? x:y; //把x和y中的大者賦給z
return(z); //把z作為max函式的值帶回main函式
}
注意:
實參可以是常量,變數或表示式,但要求它們有確定的值。在呼叫時將實參的值賦給形參。
實參與形參應相同或賦值相容。