C++ 按引用傳遞其他類型

2023-03-20 15:57 更新

不單是結(jié)構(gòu)能按引用傳遞,所有其他我們見過的類型同樣可以。例如,我們可以這么寫,來交換兩個(gè)整數(shù):

void swap (int& x, int& y)
{
   int temp = x;
   x = y;
   y = temp;
}

用普通方式調(diào)用這個(gè)函數(shù):

int i = 7;
int j = 9;
swap (i, j);
cout << i << j << endl;

程序輸出97。你可以為程序畫出棧圖來說服自己這是正確的。如果參數(shù)x和y聲明為普通參數(shù)(沒有加上&符號),則swap函數(shù)無效。它會修改x和y,而對i和j沒有影響。

當(dāng)人們開始通過引用傳遞東西,例如整型時(shí),他們經(jīng)常試圖使用表達(dá)式作為引用參數(shù)。如:

int i = 7;
int j = 9;
swap (i, j+1);            //錯(cuò)誤!

這是不合法的,因?yàn)楸磉_(dá)式j(luò)+1并不是一個(gè)變量---它并沒有占據(jù)一個(gè)引用可以指向的地址。弄清楚什么類型的表達(dá)式可以傳引用是一個(gè)小技巧。目前一個(gè)好的規(guī)則是引用參數(shù)必須是變量。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號