为什么p[-2]是54?

img


为什么-2不会越界啊?还有编译出错和运行出错的区别是什么?请各位帮我康康,谢谢

因为p指向的是a[5]
那么p[-2]不指向a[3]吗
编译出错就是在编译过程中出错,你根本没法生成exe
运行出错是编译成exe了,但是运行过程中出错

*p=&a[5]
p指向a的第6个元素,即 p[0]=a[5]p[-2]也就是*(p-2)
p[-2]=*(p-2)=a[5-2]=a[3]=54



A[B]
*(A+B)
*(B+A)
B[A]
//以上四行等价

"abc"[1]
*("abc"+1)
*(1+"abc")
1["abc"]
//以上四行等价

A[0]
*(A)
0[A]
//以上三行等价