黑马程序员技术交流社区

标题: 指针方面的问题。 [打印本页]

作者: 超越自己    时间: 2014-9-21 15:19
标题: 指针方面的问题。
  1.  #include 
  2. void change(int *n);
  3. int main()
  4. {
  5.     int a = 90;  
  6.     
  7.     change(&a);
  8.     
  9.     printf("%d\n", a);
  10.     
  11.     return 0;
  12. }
  13. void change(int *n)
  14. {
  15.     *n = 10;
  16. }
复制代码

输出的应该是90?但不知道该怎么解释自己的思路。
作者: fantacyleo    时间: 2014-9-21 16:25
输出的当然是10。你把a的地址p传给了change函数,change函数获得了修改从地址p起一个int长度字节的能力,*n = 10;这句后,a中的值已经被改为10了
作者: AngleMGG    时间: 2014-9-21 19:23
要想理解指针最好还是画一下内存图吧,&a指的是a这个变量分配的内存地址,传给change函数,那么n作为一个指针当然就是指向&a了,而*n就是内存里的int值了,所有最后的值就是10啦。
作者: 超越自己    时间: 2014-9-22 09:23
fantacyleo 发表于 2014-9-21 16:25
输出的当然是10。你把a的地址p传给了change函数,change函数获得了修改从地址p起一个int长度字节的能力,*n ...

我自己理解错了,谢谢大神。
作者: 超越自己    时间: 2014-9-22 09:24
AngleMGG 发表于 2014-9-21 19:23
要想理解指针最好还是画一下内存图吧,&a指的是a这个变量分配的内存地址,传给change函数,那么n作为一个指 ...

我自己犯糊涂了 谢谢啊!




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