C++ 交换变量
// 交换变量#include <iostream>
using namespace std;
int main() {
int a = 0, b = 1, c;
// 第一种方法:利用中间变量 c 实现变量交换
c = a;
a = b;
b = c;
cout << a << " " << b << endl;
// 第二种方法:不用中间变量 c 实现交换
a = a + b;
b = a - b;
a = a - b;
cout << a << " " << b << endl;
return 0;
} 提示下,当涉及到指针时,慎用第二种方法。
因为两个指针指向同一个地址时,第二种方法会产生诡异的错误:
其实解释起来很简单,但应用时很容易忽略这一点int main() {
int a = 5;
int *p = &a;
int *q = &a;
// 第一种方法:利用中间变量 c 实现变量交换,
int c = *p;
*p = *q;
*q = c;
cout << *p << " " << *q << endl; //p和q的值没有发生改变,自己跟自己交换当然不应该发生改变;
// 第二种方法:不用中间变量 c 实现交换
*p = *p + *q;
*q = *p - *q;
*p = *p - *q;
cout << *p << " " << *q << endl; //此时,*p=*q=0,这不是预期的结果。
return 0;
}
页:
[1]