请原谅令人困惑的问题标题,但我不确定如何更清楚地表达它。
在 C 中,越界访问数组被归类为未定义行为。然而,数组元素保证在内存中连续排列,数组下标运算符是指针运算的语法糖(例如x[3] == *(x + 3))。因此,我个人希望以下代码的行为是明确定义的:
int array[10][10];
int i = array[0][15]; // i == array[1][5]?
Run Code Online (Sandbox Code Playgroud)
如果我对标准的解释是正确的,这将是未定义的行为。我错了吗?