请教C语言指针中 &p[0] p+i *(p+i) p[i] 区别 一直感觉很迷茫

2025-02-25 21:13:26
推荐回答(2个)
回答1:

假如你有这样的定义:int p[10];
则:
&p[0] 是数组p的第一个元素的地址,跟p一样都是数组p的起始地址
p+i 由于p是数组的起始地址,则p+i就是从起始地址开始向后偏移i个位置的元素的地址,如:p+2 表示的是元素p[2]的地址&p[2]
p[i] 是指数组下标为i的元素。
对于一维数组来说有一个恒等式:p[i]=*(p+i) 变化一下就变成:p+i=&p[i]

回答2:

p[0] 和p[i]差不多,都是取值
*(p+i) 和p[i]一回事
&p[0]是取p[0]这个值存放的位置(地址)
p+i是计算位置(地址)