黑马程序员技术交流社区

标题: 函数调用的数值传递与指针传递 [打印本页]

作者: 菜鸟_琦    时间: 2014-10-25 22:15
标题: 函数调用的数值传递与指针传递
  1. #include <stdio.h>

  2. void change(int n);

  3. int main()
  4. {
  5.         int a= 90;
  6.         change(a);
  7.         printf("%d\n",a);
  8.         return 0 ;
  9. }
  10. void change(int n)
  11. {
  12.         n = 10;
  13. }
  14. 此段代码为数值传递,输出的a的值仍为90,因为数值传递改变形参的值不影响实参的值

  15. #include <stdio.h>

  16. void change(int *n);

  17. int main()
  18. {
  19.         int a= 90;
  20.         change(&a);
  21.         printf("%d\n",a);
  22.         return 0 ;
  23. }
  24. void change(int *n)
  25. {
  26.         *n = 10;
  27. }

  28. 此段代码为指针传递,调用函数时传入的是a在内存中的地址,所以change进入到地址里修改a的值,输出的a为10
  29. #include <stdio.h>
  30. int main()
  31. {
  32.         int a= 90;
  33.         int *p = &a; //此时的*仅代表是指针类型的变量
  34.         int **pp = &p;//此时的** 仅代表是指向指针类型数据的指针类型的变量
  35.          a= 20;
  36.         *p = 20;//此时的*是访问指针变量p指向的存储空间a,
  37.         //*pp == p//等价替换,此时的*是访问指针变量pp指向的存储空间p,
  38.         //**pp == *p == a
  39.         **pp =20;此时的**是访问指针变量pp指向的存储空间里面的p指向的存储空间a,
  40.         printf("%d\n",a);
  41.         return 0;
  42. }
复制代码

最后一段代码说明了指向指针的指针,怎么修改int类型a的值,
作者: 菜鸟_琦    时间: 2014-10-25 22:46
斑竹我太爱你了~~~
作者: 微雨独行    时间: 2014-10-26 16:53
支持一下楼主,走到哪一步了?
作者: 菜鸟_琦    时间: 2014-10-26 17:01
微雨独行 发表于 2014-10-26 16:53
支持一下楼主,走到哪一步了?

还在C,
作者: 微雨独行    时间: 2014-10-26 17:02
菜鸟_琦 发表于 2014-10-26 17:01
还在C,

楼主加油啊  希望成为同学
作者: 菜鸟_琦    时间: 2014-10-26 17:07
楼主也想啊,




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