C语言的数组下标问题 定义了一个int的指针p等于(int)(&arr+1)其实是将p指向arr的地址的指针向后移动了sizeof(arr),也就是说将p指向了arr数组的下一个位置,类似于c++的arr.end(),所以出现(-2)[p]也就是p[-2]的值被修改为666,输出arr,得到了0,1,666,3;而&arr+i输出的是p指向arr的地址的值+若干个sizeof(arr);而arr+1是指向arr的地址向后偏移sizeof(int)个字节。 输出结果如图: