Accessing an out-of-bounds index
suggest changeIt is undefined behavior to access an index that is out of bounds for an array (or standard library container for that matter, as they are all implemented using a raw array):
int array[] = {1, 2, 3, 4, 5};
array[5] = 0; // Undefined behavior
It is allowed to have a pointer pointing to the end of the array (in this case array + 5
), you just can’t dereference it, as it is not a valid element.
const int *end = array + 5; // Pointer to one past the last index
for (int *p = array; p != end; ++p)
// Do something with `p`
In general, you’re not allowed to create an out-of-bounds pointer. A pointer must point to an element within the array, or one past the end.
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents