指针为什么还可以这样用,p[2]指的是什么啊,或者说p[2]是什么意思
p[2]等价于*(p+2)
又p是第2个元素的地址,+2->向后偏移两个整型。
所以是54
把a[1]的地址赋给指针p,a[1]就是p[0],a[2]为p[1], a[3]为p[2]
#include <stdio.h>
int main()
{
int a[] = {5, 15, 34, 54, 14, 2, 52, 72};
int *p = &a[1];
// printf("%d", p[2]); // 54
for (int i=0; i < 7; i++)
{
printf("%d ", p[i]); // 15 34 54 14 2 52 72
}
}
定义了一个指针变量 p,然后把 a[1] 的地址给了p。
p[2] 就是从起点开始移动两个元素,即从a[1] 移动到 a[3],值为 54
A[B]
*(A+B)
*(B+A)
B[A]
//以上四行等价
"abc"[1]
*("abc"+1)
*(1+"abc")
1["abc"]
//以上四行等价
A[0]
*(A)
0[A]
//以上三行等价