相关疑难解决方法(0)

访问多维数组的元素是否越界未定义行为?

请原谅令人困惑的问题标题,但我不确定如何更清楚地表达它。

在 C 中,越界访问数组被归类为未定义行为。然而,数组元素保证在内存中连续排列,数组下标运算符是指针运算的语法糖(例如x[3] == *(x + 3))。因此,我个人希望以下代码的行为是明确定义的:

int array[10][10];
int i = array[0][15]; // i == array[1][5]?
Run Code Online (Sandbox Code Playgroud)

如果我对标准的解释是正确的,这将是未定义的行为。我错了吗?

c arrays multidimensional-array undefined-behavior

7
推荐指数
2
解决办法
185
查看次数