p是指向数组中某个特定元素的指针 那么p+i 与 *(p+i)、*p++有什么区别? 请详细说明下~ 谢谢~~~~~~

*p++是什么意思??还是没看懂????假设数组啊a[10]={0,1,2,3,4,5,6,7,8,9};p指向的是a[0];那么*p++得到是什么呢?... *p++是什么意思 ??还是没看懂????假设数组啊a[10]={0,1,2,3,4,5,6,7,8,9} ;p指向的是a[0];那么 *p++得到是什么呢? 展开
 我来答
storm20082011
推荐于2018-05-18 · 超过17用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:46.7万
展开全部
p是指针,那么p+i也是指针,即其数值表征的是地址如0x0001.*是取内容运算符,因此*(p+i)是指p+i地址中存储的数据,*(P++)与*p;p=p+1;两句是等效的,这样写简洁且编译效率更高。比如
int a[10],*p,b,c;
p=a;
p=p+2;
b=*(p+2);
c=*p++;
这段小程序包含了你说的三个语句。假设a占用的地址是0010H(H代表十六进制),且数据内容为0~10,
那么p=a执行之后,p=0010H,注意此时p内容为地址。
p=p+2执行之后,p=0014H(假设int型数据占两个字节,则P每加1实际数值增加2),仍然为地址,即p指向了a的第3个元素
b=*(p+2);执行后,b=4,及p先向下移动2个元素,然后取出内容赋值给b。p+2为0018H,因此b的值为0018H这个内存单元的值,及a的第五个元素,为4。
c=*p++等效*p;p=p+1;两句,因此此句执行之后c=2(0014H中的内容),p=0016H。

只要明白数据地址和数据本身的区别,即内存地址和内存数据的区别即可明白指针的含义与用法,谭浩强老师的C程序设计中多维数组那有一章有详细论述。指针使用非常灵活,编译器能够根据p指向对象的类型决定p+i到底增加多少数值,如指向整型数据时为i*2,float型时为i*4等等。
完蛋闹
2012-10-20 · TA获得超过100个赞
知道答主
回答量:83
采纳率:0%
帮助的人:51.1万
展开全部
如果只是p+i的话,相当什么都没做,p还是指向那个元素(在这我假设是data)...
*(p+i)表示的是从元素data开始,向后数i次,数到的那个数就是*(p+i)表示的值...
++的优先级比*高,所以*p++表示的是data后面那个元素的值...
追问
不对哦~ 一元运算符*的优先级可是高于算术运算符的哦!
追答
是这样的啊,翻书验证了...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孙永超fight
2012-10-20 · TA获得超过732个赞
知道小有建树答主
回答量:603
采纳率:0%
帮助的人:675万
展开全部
p+i是一个地址数组a[i]的地址,*(p+i)相当于a[i]为一个值,*p++相当于*p;p++这两条语句
追问
我一直不懂*p和p的区别,是不是*p代表的是指向的元素的值;而p则代表指向的元素的地址呢,?
就像 p= &c 此时是把c的地址赋值个变量p,在此处而不用*p? *p++是不是就是 先取出p所指向元素的值,然后再做加1运算? 谢谢了(⊙o⊙)~
追答
*p++,++的不是值,而是地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_siliang
2012-10-20 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4651万
展开全部
p+i :表示第i个元素的指针,其值为第i个元素的地址。
*(p+i):表示第i个元素,其值为第i个元素的值。
*p++:表示取p所指元素的值,并将p指向下一个元素。
追问
*p++:表示取p所指元素的值,并将p指向下一个元素?这里是不是先取值,再对所取得值做加以运算呢,好像不是指向下一个元素哦~  求解释
追答
这里是先取值,不是再对所取得值做加以运算,而是将p指向下一个元素。你可以编程验证上述结论的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式