#include<iostream>using namespace std;void swap(int &,int &);void main(){int a=17,b=11;int *p1=&a,*p2=&b;swap(a,b) //?cout<<"a="<<a<<",b="<<b<<endl;}void swap(int &n1,int &n2) {int temp=n1;n1=n2;n2=temp;}swap()函數實現的功能是什么?參數int &n1是什么意思?swap()函數要實現的功能是交換地址嗎?還是交換參數返回地址呢?不大理解swap的含義
4 回答

大話西游666
TA貢獻1817條經驗 獲得超14個贊
是交換實際的值,但傳遞地址,這是c++中的應用,比如調用swap的方法是:swap(a,b),調用函數void swap(int &n1,int &n2)的時候給a、b起了一個別名n1、n2,像小名一樣,都說的同一個人,這樣修改n1也就修改了a,修改n2也就是修改了b。

守著一只汪
TA貢獻1872條經驗 獲得超4個贊
swap()實現傳給函數的兩個參數的交換。
這里swap()沒有返回值,它之所以能實現值的交換,是因為參數是引用類型的。對形參的操作也影響了實際參數的值,所以a,b交換能被保存下來。
如果是這樣的函數void swap(int n1,int n2)
那么只是在調用函數時交換了n1和n2的值,但當調用結束后,a,b的值并沒發生改變。
這就是有引用和沒有用引用的區別

Smart貓小萌
TA貢獻1911條經驗 獲得超7個贊
&n1 是取變量n1的地址
你可以理解成 swap(int *n1,int *n2)
但是在傳參的時候要寫成
swap(&a,&b); 因為函數需要兩個int類型的指針變量
指針變量保存的是地址信息
a,b是你自己定義的int 類型變量 通過&(取地址運算符)取他們的地址
這樣通過引用傳參實現的功能就是交換a和b的值
- 4 回答
- 0 關注
- 1007 瀏覽
添加回答
舉報
0/150
提交
取消