A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 堕落天使 于 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. //结果并为交换。
复制代码




4 个回复

正序浏览
可以可以可以
回复 使用道具 举报
....可以的
回复 使用道具 举报
陆露 发表于 2015-9-15 18:07
int a1=5, b1=4;
    printf("交换前a1 = %d,b1 = %d\n",a,b);
    exchang_1(a1,b1);

是我打错了,输出的时候应该是a1和b1.
多谢提醒,已改正。
回复 使用道具 举报
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

评分

参与人数 1黑马币 +2 收起 理由
堕落天使 + 2 多谢提醒!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马