为了账号安全,请及时绑定邮箱和手机立即绑定

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条经验 获得超3个赞

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 关注
  • 913 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信