关于指针的算术是关联的吗?

cpx*_*cpx 7 c++ pointers pointer-arithmetic

如果我说,

int a[] = {1, 2, 3, 4, 5};
int *p = a;
Run Code Online (Sandbox Code Playgroud)

现在,如果我写的话p + 1 + 2会和它一样((p + 1) + 2)吗?任何证明这个错误的标准参考?

Bas*_*tch 1

我相信在实践中是的,但在理论上可能不是。

您问的p + 3是是否相同((p + 1) + 2),但标准规定指针算术仅在数组内部或仅在其末尾之后的一个元素有意义。