最近我遇到了这个问题,写一个函数来交换两个数字而不使用额外的空间?该函数可以有两种方式:
int swap ( int *a, int* b)
{
*a = *a+*b;
*b = *a-*b;
*a = *a-*b;
}
另一种方式是异或运算:
int swap ( int *a, int* b)
{
*a = *a^*b;
*b = *a^*b;
*a = *a^*b;
}
即使这两个函数都是一个好主意,但如果 a 和 b 都指向一个内存位置,它们将无法工作?如何解决这个问题?