C++的函式傳遞引數有變數、引用和指標三種方式:
在純C語言中最常用的是使用
變數
傳遞引數。形參是實參的一個複製,形參的改變不會影響到實參。
採用C++
引用
的方法,則可以讓函式的形參來改變實參。
當然,在C語言中,如果想改變實參,也可以採用
指標
作為函式引數的方法。
此外,陣列作為函式的引數時,是傳
引用
的;形引數組改變了,實引數組也會改變。
注意:
& 和 * 在
變數定義
的時候和在
做計算
的時候意義是不一樣的
*
在變數定義的時候是表示
定義一個指標型別的變數
*
在做計算的時候是指
獲得一個指標變數指向的地址中所儲存的變數的值
&
在變數定義的時候是表示
定義一個變數的引用
&
在做計算的時候是
指獲得一個變數的地址
,也就是說
獲得這個變數的指標
參考程式碼:
#include #include using namespace std;// use pointer 指標方式void Swap1(int * a, int * b){ int tmp; tmp = *a ; *a = *b ; *b = tmp ; cout << “in func Swap1:a=” << *a << “; b=” << *b << endl ;}// 變數方式void Swap2(int a, int b){ int tmp; tmp = a ; a = b ; b = tmp ; cout << “in func Swap2:a=” << a << “; b=” << b << endl ;}// pass by reference// 引用方式void Swap3(int &a, int &b){ int tmp; tmp = a ; a = b ; b = tmp ; cout << “in func Swap3:a=” << a << “; b=” << b << endl ;}int main (){ int a = 4, b = 5 ; //變數方式 Swap2(a,b); cout << “in main: a=” << a << “; b=” << b << endl ; //引用方式 Swap3(a,b); cout << “in main,pass by reference mode: a=” << a << “; b=” << b << endl ; //指標方式 Swap1(&a,&b); cout << “in main,pass by pointer mode: a=” << a << “; b=” << b << endl ; return 0 ;}
程式輸出結果:
in func Swap2:a=5; b=4in main: a=4; b=5in func Swap3:a=5; b=4in main,pass by reference mode: a=5; b=4in func Swap1:a=4; b=5in main,pass by pointer mode: a=4; b=5