奇技淫巧-C语言
1、两数相换
1 #include <stdio.h>
2
3 void exchang(int *, int *);
4
5
6 int main()
7 {
8 int a, b;
9 scanf("%d,%d",&a,&b);
10 printf("交换前:a = %d, b = %d\n",a, b);
11 exchang(&a, &b);
12 printf("交换后:a = %d, b = %d\n", a, b);
13
14 return 0;
15 }
16
17
18 void exchang(int *a, int *b)
19 {
20 *a = *a ^ *b;
21 *b = *a ^ *b;
22 *a = *a ^ *b;
23 }
优点:看起来更加牛逼
弊端:
当交换参数是两个指针且指向同一块内存的时候,内容就会被清零(虽然这种情况并不常见,但是我们写的程序需要适应各种不同的情况,该种情况下会导致在非主观意愿下清零指针指向地址的内容,会导致程序异常);
效率并不比利用第三个变量作交换高

浙公网安备 33010602011771号