Chinaunix首页 | 论坛 | 博客
  • 博客访问: 202561
  • 博文数量: 22
  • 博客积分: 641
  • 博客等级: 上士
  • 技术积分: 756
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-27 00:41
文章分类

全部博文(22)

文章存档

2014年(1)

2013年(1)

2012年(20)

分类: C/C++

2012-04-05 12:10:08

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

阅读(6364) | 评论(0) | 转发(3) |
给主人留下些什么吧!~~