请考虑以下代码:
int a[25][80];
a[0][1234] = 56;
int* p = &a[0][0];
p[1234] = 56;
Run Code Online (Sandbox Code Playgroud)
第二行是否调用未定义的行为?第四行怎么样?
c++ arrays pointers multidimensional-array undefined-behavior
请考虑以下情形:
std::array<int, 8> a;
auto p = reinterpret_cast<int(*)[8]>(a.data());
(*p)[0] = 42;
Run Code Online (Sandbox Code Playgroud)
这是未定义的行为吗?我觉得是这样的.
a.data()返回一个int*,不一样的int(*)[8]
cppreference上的类型别名规则似乎表明它无效reinterpret_cast
作为程序员,我知道指向的内存位置a.data()是一个8 int对象数组
是否有任何我失踪的规则使这个reinterpret_cast有效?