函數參數傳遞方式之三:引用傳遞
看題三的代碼:
Exchg3(int &x, int &y) //注意定義處的形式參數的格式與值傳遞不同
{
int tmp=x;
x=y;
y=tmp;
print(“x=%d,y=%d\n”,x,y);
}
main()
{
int a=4;
int b=6;
Exchg3(a,b); //注意:這里調用方式與值傳遞一樣
Print(“a=%d,b=%d\n”, a, b);
}
輸出結果:
x=6, y=4
a=6, b=4 //這個(gè)輸出結果與值傳遞不同。
看到?jīng)]有,與值傳遞相比,代碼格式上只有一處是不同的,即在定義處:
Exchg3(int &x, int &y)。
但是我們發(fā)現a與b的值發(fā)生了對調。這說(shuō)明了Exchg3(a,b)里頭修改的是a,b變量,而不只是修改x,y了。
我們先看Exchg3函數的定義處Exchg3(int &x,int &y)。參數x,y是int的變量,調用時(shí)我們可以像值傳遞(如: Exchg1(a,b); )一樣調用函數(如: Exchg3(a,b); )。但是x,y前都有一個(gè)取地址符號&。有了這個(gè),調用Exchg3時(shí)函數會(huì )將a,b 分別代替了x,y了,我們稱(chēng)x,y分別引用了a,b變量。這樣函數里頭操作的其實(shí)就是實(shí)參a,b本身了,也就是說(shuō)函數里是可以直接修改到a,b的值了。
引用傳遞相當于非拷貝傳遞,形參相當于實(shí)參的別名。