W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
C++中另一種可選擇的參數(shù)傳遞機制被稱為"傳引用調(diào)用"。這種機制使得我們能傳遞一個結(jié)構(gòu)體給程序并修改它。
例如,你可以通過交換兩個坐標來得到某個點關(guān)于45度線的對稱點。reflect函數(shù)最明顯(但不正確)的寫法是:
void reflect (Point p) //錯誤!!
{
double temp = p.x;
p.x = p.y;
p.y = temp;
}
這么寫并不奏效,因為我們在reflect函數(shù)中所做的改變并不會影響調(diào)用者。
相反,我們必須指明要通過引用傳遞參數(shù)。為參數(shù)聲明加上一個符號(&)即可。
void reflect (Point& p)
{
double temp = p.x;
p.x = p.y;
p.y = temp;
}
現(xiàn)在我們以普通方式調(diào)用這個函數(shù):
printPoint(blank);
reflect(blank);
printPoint(blank);
程序輸出與預期相符:
(3,4)
(4,3)
下圖展示了我們?yōu)槌绦蚶L制的棧圖:
參數(shù)p是blank結(jié)構(gòu)的一個引用。引用通常用一個帶箭頭的點表示,箭頭指向引用所指。
圖中最重要的是要看到:引用對p做的任何改變同樣會影響blank。
通過引用傳遞結(jié)構(gòu)比按值傳遞更通用,這是因為被調(diào)用者也能修改結(jié)構(gòu)。此外,由于系統(tǒng)不需要復制整個結(jié)構(gòu),這使得引用傳遞更快。另一方面,它的安全性下降了,因為很難追蹤結(jié)構(gòu)是在哪被修改的。盡管如此,在C++程序中,幾乎所有的結(jié)構(gòu)都是按引用傳遞的。本書中我會遵循這一習慣。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: