黑马程序员技术交流社区

标题: 用函数实现两变量值交换(指针) [打印本页]

作者: 堕落天使    时间: 2015-9-15 17:18
标题: 用函数实现两变量值交换(指针)
本帖最后由 堕落天使 于 2015-9-15 20:40 编辑

一个简单地程序,但是能体现出指针的用法。
  1. /*
  2. 思考&实现
  3. 用函数实现两个变量值的交换。
  4. */


  5. #include <stdio.h>
  6. /**
  7. *  通过指针交换两个变量的值
  8. *
  9. *  @param p  第一个变量的地址
  10. *  @param p1 第二个变量的地址
  11. */
  12. void exchang(int *p,int *p1){
  13.     int temp;
  14.     temp=*p;  //注意此处是取指针p指向地址内的值进行运算。
  15.     *p=*p1;
  16.     *p1=temp;
  17. }
  18. /**
  19. *  此方法不能实现交换的功能
  20. *  在此函数中,形参a和b的值实现了交换,但是程序结束,此函数分配的内存
  21. *  消失,对应的形参的内存也消失,交换的值没有对实参产生任何影响。
  22. *   所以不成功。
  23. */
  24. void exchang_1(int a,int b){
  25.     int temp;
  26.     temp = a;
  27.     a = b;
  28.     b = temp;
  29. }
  30. int main(int argc, const char * argv[]) {
  31.     int a=5, b=4;
  32.     printf("交换前a = %d,b = %d\n",a,b);
  33.     exchang(&a, &b);
  34.     printf("交换后a = %d,b = %d\n",a,b);
  35.     int a1=5, b1=4;
  36.     printf("交换前a1 = %d,b1 = %d\n",a1,b1);
  37.     exchang_1(a1,b1);
  38.     printf("交换后:a1= %d,b1= %d",a1,b1);
  39. //结果并为交换。
复制代码





作者: 陆露    时间: 2015-9-15 18:07
int a1=5, b1=4;
    printf("交换前a1 = %d,b1 = %d\n",a,b);
    exchang_1(a1,b1);
    printf("交换后:a1= %d,b1= %d",a,b);
你这里定义的是a1 b1  为什么后面打印的是 a,b ?
而且你传到函数里的变量也是 a1 b1


作者: 堕落天使    时间: 2015-9-15 20:41
陆露 发表于 2015-9-15 18:07
int a1=5, b1=4;
    printf("交换前a1 = %d,b1 = %d\n",a,b);
    exchang_1(a1,b1);

是我打错了,输出的时候应该是a1和b1.
多谢提醒,已改正。
作者: ai77033024    时间: 2015-9-15 21:28
....可以的
作者: kylmetz    时间: 2015-9-15 21:31
可以可以可以




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