【发布时间】:2012-06-01 11:04:50
【问题描述】:
考虑以下代码:
int array2d[10][10];
int *array1d = array2d[0];
我从未听说过它不起作用的实现,但是通过array1d 访问和操作array2d 是否合法?标准的哪个部分允许这样做?标准中是否有任何内容阻止实现在每个二级数组之间插入额外的空间或填充(不是它需要的,但仍然需要)?
额外问题:有没有一种方法可以将array2d 作为int[100] 访问,而不需要reinterpret_cast 或C 风格?
【问题讨论】:
-
您总是可以将它包装在一个类中,该类在内部将其存储为一维数组。
-
报名参加 c++ 混淆竞赛 :) ?
-
int* array1d = array2d[0];不是更直接一点吗? -
@ildjarn:确实如此,我当然不习惯转换数组。
标签: c++ language-lawyer