void f(void) { int * p; int a[3] = {1,2,3}; p = a; printf("%d %d", a[0], p[0], *(a+1), *(p+1)); //此处四种表示方法等价 } 思考:为什么数组可以使用下标进行元素定位? 答:因为数组名等价于数组第一个元素的地址,如上述代码中a[0]与*p等价与*(p+0)等价,a与p等价,所以数组的下标涵义上是通过指针的移位进行定位的。