Pau*_*nta 2 c c++ arrays undefined-behavior
如果我以下列方式浏览2D数组的元素,它是不确定的行为吗?
int v[5][5], i;
for (i = 0; i < 5*5; ++i) {
v[i] = i;
}
Run Code Online (Sandbox Code Playgroud)
然后,它甚至编译?(我现在不能尝试,我不在家.)如果没有,那么想象我以某种方式获得了指向第一个元素并使用taht代替的指针v[i].
从指向第一个元素的指针访问多维数组的元素是UB,表示不属于第一个数组的元素.
鉴于T array[n],array[i]对于所有i> = n ,是直接前往UB-land.即使T是U[m].即使是通过指针.确实存在对阵列(例如sizeof(int[N]) == N*sizeof(int))的强烈要求,正如其他人所提到的那样,但没有明确的例外,因此无法对其进行任何处理.
我没有官方参考,因为据我所知,C++标准将详细信息留给了C89标准,而且我不熟悉C89或C99标准.相反,我有一个comp.lang.c FAQ的引用:
[...]根据官方解释,访问(&array [0] [0])[x]的行为未定义为x> = NCOLUMNS.