访问越界索引

访问超出数组范围的索引(或标准库容器,因为它们都使用原始数组实现) 是未定义的行为 : **

 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`

通常,不允许创建越界指针。指针必须指向数组中的元素,或者指向结尾的元素。