C++编程,实现当x小于y时交换x和y的值,下面的代码为什么实现不了?我用的是传值调用,请说明具体理由~!

[复制链接]
查看11 | 回复4 | 2013-8-23 17:53:10 | 显示全部楼层 |阅读模式
#include void swap(int a,int b){int tmp;tmp=a;a=b;//仅仅是将局部变量a,和b的值交换,当swap函数运行完后 a,b的值就释放了所以x,y的值不会变 b=tmp;}void main(){int x,y;cout > x;cin >> y;if(x<y)swap(x,y);//x,y的值不会随着swap函数里的a,b的值变换而变化cout << "x=" << x <<endl;cout << "y=" << y <<endl;...
回复

使用道具 举报

千问 | 2013-8-23 17:53:10 | 显示全部楼层
你这里采用传值的方式传递形参,既是先对x,y两个变量复制产生两个副本,然后在swap函数中对两个副本进行交换操作,实际的x,y没有发生任何变化,正确的方式可以将swap形参改为引用,void swap(int& a,int& b),实现这个功能的方法还有很多,网上可以查到...
回复

使用道具 举报

千问 | 2013-8-23 17:53:10 | 显示全部楼层
交换的时候要么传指针 要么传引用
直接传递的时候 你交换执行的不是数据本身而是交换了数据的备份...
回复

使用道具 举报

千问 | 2013-8-23 17:53:10 | 显示全部楼层
swap函数中确实是在进行数值的交换,但是交换完的数据并没有传出来,所以x,y并没有变化。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行