奇技淫巧-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 }

优点:看起来更加牛逼

弊端:

当交换参数是两个指针且指向同一块内存的时候,内容就会被清零(虽然这种情况并不常见,但是我们写的程序需要适应各种不同的情况,该种情况下会导致在非主观意愿下清零指针指向地址的内容,会导致程序异常);

效率并不比利用第三个变量作交换高

 

posted @ 2020-08-17 13:08  阿拉灯神丁0  阅读(134)  评论(0)    收藏  举报