每日一题:不适用第三个变量,实现交换两个输入参数

每日一题:不适用第三个变量,实现交换两个输入参数


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


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


实现代码:

#include <stdio.h>
#include 
<stdlib.h>
// 交换两个数据,但是不适用第三个变量
void swap(int* a, int* b)
{
    
*= (*a) ^ (*b);
    
*= (*a) ^ (*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;
}


 


posted @ 2010-11-18 21:49  qiang.xu  阅读(341)  评论(0编辑  收藏  举报