将两个数值交换的方法有很多,一般的做法有:
int a,b;
int x;
x = a;
a = b;
b = x;
以上方法增加了一个变量。
如何做一个通用函数进行值变换呢?有,通过指针的方法:
int a,b;
int x;
void chang(int *a,int *b)
{
int x;
x = *a;
*b = *a;
*a = x;
}
但这也还是增加了一个变量,如何在不增加变量的情况下交换两个数的值呢?
int a,b;
a ^= b;
b ^= a;
a ^= b;
还有没有更高明的做法交换两个数的值呢?有,通过引用的方法:
int a,b;
void chang(int &a,int &b)
{
a = a + b;
b = a - b;
a = a - b;
}
或许还有更好的方法,有待我们去发现去增加。