我一直在阅读只要您不离开数组的边界,就定义了指针算术。我不确定我是否完全理解这意味着什么,我有点担心。因此这个问题。
假设我从一个指向数组开头的指针开始:
int *p = (int*) malloc(4 * sizeof(int));
现在我创建了两个位于数组边界之外的新指针:
int *q = p + 10;
int *r = p - 2;
现在指针q-10
, q-9
, ..., r+2
, r+3
, 等等都位于数组的边界内。它们有效吗?例如,r[3]
保证p[1]
给出与?相同的结果
我已经做了一些测试并且它有效。但我想知道这是否包含在通常的 C 规范中。具体来说,我使用的是 Visual Studio 2010、Windows,并且我正在使用本机 C(不是 C++)进行编程。我被覆盖了吗?