关于C++的指针和引用,希望能详细解释下输出第二行的过程

#include<iostream.h>voidswap(intx,int*y,int&z);voidmain(){inta,b(10),c;a=b/3;c=a/2;co... #include<iostream.h>
void swap(int x,int *y,int&z);
void main( )
{ int a,b(10),c;
a=b/3;
c=a/2;
cout<<"a="<<a<<","<<"b="<<b<<”c=”<<c<<endl;
swap(a,&b,c);
cout<<"a="<<a<<","<<"b="<<b<<”c=”<<c<<endl;
}
voidswap(int x,int *y, int &z)
{ int t ;
t=x;
x=*y;
*y=t;
z=t;
}
结果:a=3,b=10,c=1
a=3,b=3,c=3
就想知道x=*y为什么还是a=3 ,和swap(int x,int *y,int&z);
展开
 我来答
Linyar
推荐于2016-01-03 · TA获得超过757个赞
知道小有建树答主
回答量:180
采纳率:100%
帮助的人:240万
展开全部
1、先看函数参数
swap(int x,int *y, int &z)

第一个参数x是数值,是值传递。函数内对虚参x的修改不会影响函数调用时传入的实参。
第二个参数是指针,指针就是地址。函数内虚参y和函数调用时传入的实参指向的地址一样,函数内虚参y值修改,实际就是修改的函数调用传入的实参。
第三个参数是引用,引用就是地址。函数内虚参z和函数调用时传入的实参指向的地址一样,函数内虚参z值修改,实际就是修改的函数调用传入的实参。
2、输出说明
swap函数内:x=*y=10,从上面分析的引用可知,函数内x不影响传入的a的值,因此,a=3
swap函数内:*y=t=x,由于传入的x=3,所以*y=3,从上面分析的指针可知,b=3

swap函数内:z=t=x,由于传入的x=3,所以z=3,从上面分析的引用可知,c=3

因此,输出a=b=b=3

希望能帮助到你,你的好评是我前进的动力!谢谢!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式