黑马程序员技术交流社区

标题: 指针变量的引用 [打印本页]

作者: 1312878967    时间: 2015-8-7 09:45
标题: 指针变量的引用
#include “stdio.h”
main(){
int a = 7,b = 9,*p;
p = &a;
*p=*p+b;
printf(“%d,%d\n”,a,*p);


请问大神,输出的结果为什么都是16?????
作者: QQ2544    时间: 2015-8-7 10:02
本帖最后由 QQ2544 于 2015-8-7 10:18 编辑

因为指针指向了a,所以对a进行操作,进行加7.所以是16啊
作者: 1312878967    时间: 2015-8-7 11:13
QQ2544 发表于 2015-8-7 10:02
因为指针指向了a,所以对a进行操作,进行加7.所以是16啊

我的意思是 第一个%d对应的a 是怎么变成16的啊
作者: QQ2544    时间: 2015-8-7 11:28
1312878967 发表于 2015-8-7 11:13
我的意思是 第一个%d对应的a 是怎么变成16的啊

因为a已经加7了啊,指针指向了a,对a进行了操作。
作者: 1312878967    时间: 2015-8-7 15:40
QQ2544 发表于 2015-8-7 11:28
因为a已经加7了啊,指针指向了a,对a进行了操作。

啊~~~~~还是不太明白 绕不过来了 能不能把代码逐句解释下 谢谢啦
作者: 1312878967    时间: 2015-8-7 15:54
QQ2544 发表于 2015-8-7 11:28
因为a已经加7了啊,指针指向了a,对a进行了操作。

我貌似懂了 指针变量p中存放的是a的地址 所以*p是p指向的变量 就是a *p与a等价 对吧 嘻嘻
作者: QQ2544    时间: 2015-8-7 15:54
1312878967 发表于 2015-8-7 15:40
啊~~~~~还是不太明白 绕不过来了 能不能把代码逐句解释下 谢谢啦

p = &a;//此处,指针指向a
*p=*p+b;//这里可以认为是a=a+b;
这样比较容易理解
作者: QQ2544    时间: 2015-8-7 15:55
1312878967 发表于 2015-8-7 15:54
我貌似懂了 指针变量p中存放的是a的地址 所以*p是p指向的变量 就是a *p与a等价 对吧 嘻嘻 ...

可以这么理解。
作者: liusuizuoyou    时间: 2015-8-8 23:20
因为 p 指向 a啊   可以这么说 a==*p  所以对*P操作就 是对a操作
作者: m小怪兽    时间: 2015-8-8 23:34
没怎么学懂.
作者: nancexp    时间: 2015-8-8 23:48
p 指向 a,  
作者: 庞佳星    时间: 2015-8-9 12:43
好好理解一下 地址,指针,还有变量值在内存中 所处的位置,这个问题就解决了
作者: 飓风少年    时间: 2015-8-9 14:13
必须是16啊,*p代表的是a的地址,包含了a的数据,用a的地址去加p所以是16
作者: 墨琰    时间: 2015-8-9 22:12
指针变量存储的是变量a的地址,这时候进行运算,赋值运算自右至左运算,等号右边的*p是取值操作,取出变量a地址下的值7,然后和9求和得到16,这时候变量a的值已被修改
作者: wangchao1992    时间: 2015-8-9 23:19
在大神的指导下 ,已看懂
作者: lzfree    时间: 2015-8-9 23:51
66666666666666666666




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