如果p是个指针变量,p[i]永远等价于*(p+i) 这个怎么理解,什么意思?要详细

 我来答
戊冰香鲍临
2019-09-13 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:29%
帮助的人:726万
展开全部
就是说,p[i]和*(p+i)意思一样,表示同一“变量”。
或许你已经听说过,数组名本身就是指针。如:
int
a[5];
那么,a就是一个指针,它指向数组的第一个元素。反过来,每一个指针都可以当做一个数组来用。如:
char
*p="0123";
那么,编译器会分配5字节存储字符串“0123”,而p则指向第一个字符'0'。所以,*p=='0',*(p+3)=='3'(如果楼主指针运算学得好的话,应该不难理解)。其实,你完全可以不用*运算符,由“等价”可知:p[0]=='0',p[3]=='3'
泣国兴零闵
2019-09-06 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:29%
帮助的人:773万
展开全部
这个是不能随便这么写的。因为p必须是数组的指针,可以不是指针。因为数组的内存分布是连续的,p+i,实质是指向p数组的第i个元素的指针,*(p+i)就是这个指针的内容,所以与p[i]相同。其实i就是个偏移量。理论上p是一个地址,p+i值为p+i*单个元素的字节长度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
全物户R
2020-05-01 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:26%
帮助的人:798万
展开全部
因为数组的第一个元素就是一个指针,*(p+1)就是第二个元素,*(p+0)表示第一个元素*p也表示第一个元素。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式