黑马程序员技术交流社区

标题: 用函数实现两个变量的值交换及常见误区 [打印本页]

作者: OnTheWay_1314    时间: 2015-12-4 16:11
标题: 用函数实现两个变量的值交换及常见误区
  1. <div class="blockcode"><blockquote>#include <stdio.h>
  2. void swap(int *p1,int *p2);
  3. void swap1(int x,int y);
  4. void swap2(int *p1,int *p2);
  5. int main(int argc, const char * argv[])
  6. {
  7.     // 定义变量
  8.     int a = 3,b = 4;
  9.     int *p1 = &a,*p2 = &b;
  10.     swap(p1, p2);
  11.     //swap1(3, 4);
  12.     //swap2(p1, p2);
  13.     printf("a=%d,b=%d\n",a,b);
  14.     return 0;
  15. }
  16. void swap(int *p1,int *p2)
  17. {
  18.     //注意,正解!
  19.     int temp;
  20.     temp = *p1;
  21.     *p1 = *p2;
  22.     *p2 = temp;
  23. }
  24. void swap1(int x,int y)
  25. {
  26.     //此处实际上是形参变量x,y的值交换,与实参无关
  27.     int temp;
  28.     temp = x;
  29.     x = y;
  30.     y = temp;
  31. }
  32. void swap2(int *p1,int *p2)
  33. {
  34.     //相当于形参的地址进行了交换,与实参无关
  35.     int *temp;
  36.     temp = p1;
  37.     p1 = p2;
  38.     p2 = temp;
  39. }
复制代码

当当当当,就如上代码所示咯,注释也很清楚,写下来希望自己谨记,也给大家做个参考!


作者: junjunzhang    时间: 2015-12-5 09:23
是不是可以理解为swap1是表面的值传递,swap2是表面的地址传递,swap是地址里边存储的值的传递
作者: 长厢厮守℡    时间: 2015-12-5 10:34
谨记,我第一次打这个代码,就写成了swap2,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2