C++ 按引用傳遞其他類(lèi)型

2023-03-20 15:57 更新

不單是結(jié)構(gòu)能按引用傳遞,所有其他我們見(jiàn)過(guò)的類(lèi)型同樣可以。例如,我們可以這么寫(xiě),來(lái)交換兩個(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。你可以為程序畫(huà)出棧圖來(lái)說(shuō)服自己這是正確的。如果參數(shù)x和y聲明為普通參數(shù)(沒(méi)有加上&符號(hào)),則swap函數(shù)無(wú)效。它會(huì)修改x和y,而對(duì)i和j沒(méi)有影響。

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

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

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)