访问越界索引
访问超出数组范围的索引(或标准库容器,因为它们都使用原始数组实现) 是未定义的行为 : **
int array[] = {1, 2, 3, 4, 5};
array[5] = 0; // Undefined behavior
它是允许有一个指针指向数组的结束(在这种情况下 array + 5
),你就不能解引用它,因为它不是一个有效的元素。
const int *end = array + 5; // Pointer to one past the last index
for (int *p = array; p != end; ++p)
// Do something with `p`
通常,不允许创建越界指针。指针必须指向数组中的元素,或者指向结尾的元素。