关于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); 展开
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); 展开
1个回答
展开全部
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
希望能帮助到你,你的好评是我前进的动力!谢谢!
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
希望能帮助到你,你的好评是我前进的动力!谢谢!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询