I am always reading that pointer arithmetic is defined as long as you don\'t leave the bounds of the array. I am not sure I completely understand what this means and I was a
According to the C11 standard, §6.5.6/8 (I put in the first part for context):
When an expression that has integer type is added to or subtracted from a pointer
...
If both the pointer operand and the result point to elements of the same array object, or one past the last element of the array object, the evaluation shall not produce an overflow; otherwise, the behavior is undefined.
Therefore, a result that is outside of the array and not one past the end is undefined behaviour.