C语言swap简单应用
时间: 2024-10-06 12:02:44 浏览: 31
在C语言中,交换两个变量的值通常使用临时变量或者不使用额外变量的技巧,比如著名的"双指针法"或"异或(XOR)"操作。以下是两种常见的方法:
### 使用临时变量
```c
void swap(int *a, int *b) {
int temp;
temp = *a; // 将a的值暂存到temp
*a = *b; // 把b的值赋给a
*b = temp; // 再把temp的值赋给b,完成交换
}
```
在这个函数中,我们通过创建一个名为`temp`的临时变量来保存`a`的原始值,然后依次将`b`的值给`a`,再将`temp`的值给`b`。
### 不使用临时变量(XOR操作)
这种方法利用了异或操作的性质,即任何数与其自身异或的结果都是0。因此,两个数相加后再异或,等于原两数的和;反之,两个数相加后再按位与(AND),结果就是原来的两个数各自对应位的异或值。
```c
void swapWithoutTemp(int *a, int *b) {
*a ^= *b; // a = a XOR b
*b ^= *a; // b = b XOR (a XOR b) = (b XOR a) XOR b = a (因为a = b XOR a)
*a ^= *b; // a = (a XOR b) XOR b = b (因为b = a XOR b)
}
```
这个版本的函数更简洁,但只适用于无符号整数,对于有符号整数,可能会产生意外的负数溢出。
阅读全文