(1)使用位运算
#include<stdio.h>
int main ()
{
int a, b;
printf("请输入两个值\n");
scanf_s("%d %d", &a, &b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d %d\n", a, b);
}
感觉异或运算很有趣
1^2=0000 0001 ^ 0000 0010=0000 0011 就相当于1+2=3
0000 0011 ^ 0000 0001=0000 0010就相当于3-1=2
0000 0011 ^ 0000 0010=0000 0010就相当于3-2=1
上面的编码就是这种思想
(2)用指针
void swap_1(int *a,int *b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
但是要注意
void swap_1(int a,int b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
这个并不能达到a,b交换的目的,因为形参向实参传值的过程是单向的。