(1)變量作函數參數,形參要額外開闢內存,形參和實參佔用不同的內存。
(2)指針類型作函數參數,是將實際參數的地址指針傳給形參,操作效率很高。
void swapint(int *a,int *b)
{
int *t;
t=a;
a=b;
b=t;
}
void swapint(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
(3)形參用該類型的引用,就相當於那個變量,也是屬於地址傳遞,效率高。
void swapint(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
函數作爲參數與函數指針
(1)函數指針的聲明
Note:
*自定義變量名 —— 這種格式一定是函數指針,這個變量可以代表函數
一個函數的名字可以代表這個函數的指針
聲明格式:
void (*pfunc) (int, int)
。
(2)函數指針的使用
函數的名字本身就是該函數的指針
(3)函數作爲參數
方法一:typedef提前定義好函數格式
typedef int (*func) (int,int);
//這樣func就可以代表一類函數;
//使用這個定義
void runfunc(func p,int a, int b)
{
p(a,b);
}
void add(int a, int b)
{
cout<<a+b<<endl;
}
//函數作參數
runfunc(add,1,2);
方法二:直接在參數裏定義好函數格式
void runfunc(void (*p)(int,int), int a, int b)
{
p(a,b);
}
void add(int a, int b)
{
cout<<a+b<<endl;
}
//函數作參數
runfunc(add,1,2);
方法三:不用指針
void runfunc(void p(int, int),int a, int b)
{
func(a,b);
}
void add(int a, int b)
{
cout<<a+b<<endl;
}