C++函式引數採用變數、引用和指標的區別

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