我知道这个答案违反了reinterpret_cast
规则,但它也假定子数组将被线性分配。
我相信这并不能保证,但是当我搜索标准时,我发现我的信心在动摇。如果我静态分配一个二维数组,如下所示:
int foo[][4] = { { 5, 7, 8 },
{ 6, 6 },
{},
{ 5, 6, 8, 9 } };
我可以假设所有元素都将线性分配吗?也就是说如果foo[0]
在地址0x00000042处,会:
foo[1]
位于地址 0x00000052foo[2]
位于地址 0x00000062foo[3]
位于地址 0x00000072
sizeof(int) == 4
这些地址是十六进制的,是的,它们为带有;的 4 元素子数组提供空间。它们可能也可能不会被零初始化。