每日一题:不适用第三个变量,实现交换两个输入参数
问题描述:编写一个函数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; }
程序拓展:
待续。。。