c语言中swap问题小结

来源:互联网 发布:在淘宝上做充值有用吗 编辑:程序博客网 时间:2024/06/05 10:03
c语言中swap问题小结2012-04-05 12:10:08

分类: C/C++

swap:实现交换的话,得传地址过去进行交换

点击(此处)折叠或打开

  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. void swap1(int x,int y)
  4. {
  5.     int temp;
  6.     temp=x;
  7.     x=y;
  8.     y=temp;
  9. }
  10. void swap2(int*x,int*y)
  11. {
  12.     int *temp;
  13.     temp=x;
  14.     x=y;
  15.     y=temp;
  16. }
  17. void swap3(int*x,int*y)
  18. {
  19.     int temp;
  20.     temp=*x;
  21.     *x=*y;
  22.     *y=temp;
  23. }
  24. void swap4(int a[],int b[])
  25. {
  26.     int temp;
  27.     temp=a[0];
  28.     a[0]=b[0];
  29.     b[0]=temp;
  30. }
  31. void swap5(int a[],int b[])
  32. {
  33.     int temp;
  34.     temp=*a;
  35.     *a=*b;
  36.     *b=temp;
  37. }
  38. int main()
  39. {
  40.     int x,y;
  41.     x=4;
  42.     y=3;
  43.     swap1(x,y);
  44.     printf("swap1: x:%d,y:%d\n",x,y);//形参传值,不能交换,实际传过去是拷贝的一份,没改变主函数中x,y
  45.     swap2(&x,&y);
  46.     printf("swap2: x:%d,y:%d\n",x,y);//不能交换,函数中只是地址交换了下,地址指向的内容没有交换
  47.     swap3(&x,&y);
  48.     printf("swap3: x:%d,y:%d\n",x,y);//能交换,地址指向的内容进行了交换
  49.     swap4(&x,&y);
  50.     printf("swap4: x:%d,y:%d\n",x,y);//能交换,地址指向的内容进行交换
  51.     swap5(&x,&y);
  52.     printf("swap5: x:%d,y:%d\n",x,y);//能交换,地址指向的内容进行交换
  53.     return 0;
  54. }

点击(此处)折叠或打开

  1. swap1: x:4,y:3
  2. swap2: x:4,y:3
  3. swap3: x:3,y:4
  4. swap4: x:4,y:3
  5. swap5: x:3,y:4

转自  http://blog.chinaunix.net/uid-26826958-id-3161383.html

0 0