指针确实是一个难点,但我遇到了这段代码,就是不知道p[-1]是什么意思: #include <stdio.h> int main(void) { int t[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, *p = t; p += 2; p += p[-1]; printf("%d",*p); return 0; }
p += p[-1]; 可以写成: 可以写成 p = p + *(p-1); 在那个时刻,p 指向数组的第三个元素(值为 3),*(p-1) 是 2。 因此,它等价于 p = p+2; 打印*p将打印5。
t[2]
的地址)。现在,您访问它所指向的地址之前的一个地址,导致它指向包含“2”(或t[1]
)的地址。 - moffeltje