您的位置:首页 > 其它

温故知新系列(二)交换两个变量的值不用第三个变量

2012-07-22 01:05 253 查看
  对于允许用第三个变量来转存交换两个变量的值,有指针和引用。这里很简单,直接给出代码

  View Code

#include <iostream>
#include <cstdio>
using namespace std;

void Swap(int &a , int &b)
{
a+=b;
cout<<a<<" "<<b<<endl;
b=a-b;
cout<<a<<" "<<b<<endl;
a=a-b;
}

int main()
{
int i=20;
Swap(i,i);
cout<<i<<endl;
return 0;
}


  从上面的交换过程中的输出,我们发现,第一次a=a+b;的时候,a变成了40,但,别忘了,b和a是指向同一个地址的,也就是说,b的值也变化了,并且永远和a相

  等,这就是为什么交换后为0的缘由了。

  解决方法也很简单,就是在用两个变量交换的时候,判断a,b是否相等即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: