我正在尝试下面的代码片段。请帮助我理解交货单是如何作为2来的吗?p[-2]在这里是什么意思?
int main(void){
int ary[4] = {1, 2, 3, 6};
int *p = ary + 3;
printf("%d\n", p[-2]);
}发布于 2014-12-05 13:04:14
ary是一个由四个int组成的数组。
| 1 | 2 | 3 | 6 |
^ ^ ^
| | |
ary p - 2 p通过说p = ary + 3,您将p设置为数组中第四个元素的地址。所以,p指的是6。p[-2]等于*(p - 2)。这意味着将p指向数组中的第二个元素,并访问其值:2。
发布于 2014-12-05 13:02:49
int *p = ary + 3指向ary3,所以如果将指针向后移动两步,您将得到ary1
https://stackoverflow.com/questions/27316444
复制相似问题