亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c++ 看這段代碼 swap()函數所要實現的功能?

c++ 看這段代碼 swap()函數所要實現的功能?

POPMUISE 2019-02-13 15:11:10
#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 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

swap()實現傳給函數的兩個參數的交換。
參數int &n1是以引用調用的方式傳遞參數給swap();
swap()要實現的功能是交換兩個變量,也就是兩個參數的值。

查看完整回答
反對 回復 2019-03-22
?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

是交換實際的值,但傳遞地址,這是c++中的應用,比如調用swap的方法是:swap(a,b),調用函數void swap(int &n1,int &n2)的時候給a、b起了一個別名n1、n2,像小名一樣,都說的同一個人,這樣修改n1也就修改了a,修改n2也就是修改了b。

查看完整回答
反對 回復 2019-03-22
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

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

查看完整回答
反對 回復 2019-03-22
?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

&n1 是取變量n1的地址
你可以理解成 swap(int *n1,int *n2)
但是在傳參的時候要寫成
swap(&a,&b); 因為函數需要兩個int類型的指針變量
指針變量保存的是地址信息
a,b是你自己定義的int 類型變量 通過&(取地址運算符)取他們的地址
這樣通過引用傳參實現的功能就是交換a和b的值

查看完整回答
反對 回復 2019-03-22
  • 4 回答
  • 0 關注
  • 1007 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號