温故知新系列(二)交换两个变量的值不用第三个变量
2012-07-22 01:05
253 查看
对于允许用第三个变量来转存交换两个变量的值,有指针和引用。这里很简单,直接给出代码
View Code
从上面的交换过程中的输出,我们发现,第一次a=a+b;的时候,a变成了40,但,别忘了,b和a是指向同一个地址的,也就是说,b的值也变化了,并且永远和a相
等,这就是为什么交换后为0的缘由了。
解决方法也很简单,就是在用两个变量交换的时候,判断a,b是否相等即可。
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是否相等即可。
相关文章推荐
- 不用第三个变量,直接交换两个变量的值
- 不用第三个变量就能交换两个变量值的五个方法
- 不用第三个变量交换两个变量的值
- 不用第三个变量交换两个变量的值
- 交换两个变量的值,不用第三个变量
- 交换两个变量以及不用第三个变量交换两个变量
- 两个变量交换数字 不用第三个变量的情况下 int a = 5,b = 6
- 不用第三个变量,直接交换两个变量的值
- 不用第三个变量交换两个参数值得5种方法
- php 不用第三个变量交换两个变量的值
- 不用第三个变量交换两个变量的值
- 由“不用第三个变量,直接交换两个…
- 不用第三个变量及其他函数等交换两个变量的值
- [2016/12/5]不用第三个变量交换两个数字
- 不用第三个变量就能交换两个变量值的五个方法
- 不用第三个变量,直接交换两个变量的值
- java中不用第三个变量交换两个变量的值
- PHP中不用第三个变量交换两个变量的值
- 不用第三个变量,直接交换两个变量的值
- 不用第三个变量,交换两个int数