不用第三个变量交换两个参数值

问题描述:编写一个函数swap,输入两个参数a, b,要求函数中不能够使用第三个变量,函数输出交换之后的a和b。

思路:如果程序中不能够使用另外的第三个变量的话,只能够通过所谓的“技巧"来实现。这里使用的技巧如下:a ^ 0 = a. a ^ a = 0(异或运算)

实现代码:

#include <stdio.h> 
#include <stdlib.h> 
// 交换两个数据,但是不适用第三个变量 
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; 
}

原文地址:https://www.cnblogs.com/kingangWang/p/2676481.html