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

发布网友

我来回答

3个回答

热心网友

就是说,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'

热心网友

这个是不能随便这么写的。因为p必须是数组的指针,可以不是指针。因为数组的内存分布是连续的,p+i,实质是指向p数组的第i个元素的指针,*(p+i)就是这个指针的内容,所以与p[i]相同。其实i就是个偏移量。理论上p是一个地址,p+i值为p+i*单个元素的字节长度

热心网友

因为数组的第一个元素就是一个指针,*(p+1)就是第二个元素,*(p+0)表示第一个元素*p也表示第一个元素。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com