訪問越界索引
訪問超出陣列範圍的索引(或標準庫容器,因為它們都使用原始陣列實現) 是未定義的行為 : **
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`
通常,不允許建立越界指標。指標必須指向陣列中的元素,或者指向結尾的元素。