问题描述:编写一个函数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; 
}

相关文章:

  • 2022-02-03
  • 2022-02-02
  • 2021-07-04
  • 2021-06-06
  • 2021-06-11
  • 2022-02-10
猜你喜欢
  • 2021-06-01
  • 2022-12-23
  • 2022-12-23
  • 2021-05-16
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案