思路:如果程序中不能夠使用另外的第三個(gè)變量的話,只能夠通過(guò)所謂的“技巧"來(lái)實(shí)現(xiàn)。這里使用的技巧如下:a ^ 0 = a. a ^ a = 0(異或運(yùn)算)
實(shí)現(xiàn)代碼:
#include <stdio.h>
#include <stdlib.h>
// 交換兩個(gè)數(shù)據(jù),但是不適用第三個(gè)變量
void swap(int* a, int* b)
{
*b = (*a) ^ (*b);
*a = (*a) ^ (*b);
*b = (*a) ^ (*b);
}
int main()
{
int a = 3;
int b = 4;
printf("before swap, a = %d, b = %d\n", a, b);
swap(&a, &b);
printf("after swap, a = %d, b = %d\n", a, b);
return 0;
}