#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条经验 获得超3个赞
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 关注
- 963 浏览
添加回答
举报
0/150
提交
取消