use*_*939 19 c c++ arrays typedef multidimensional-array
由于标题可能看起来很混乱,让我举个例子:
typedef bool foo[2];
typedef foo bar[4];
bar what_am_i;
Run Code Online (Sandbox Code Playgroud)
那么,我认为是what_am_i一个[4][2]维数组,还是一个[2][4]维数组?
Sha*_*ang 21
这是bool[4][2]
你可以通过static_assert验证:
static_assert(std::is_same<decltype(what_am_i), bool[4][2]>::value, "");
static_assert(std::is_same<decltype(what_am_i), bool[2][4]>::value, ""); // failed
Run Code Online (Sandbox Code Playgroud)
son*_*yao 13
foo是一个包含2类型元素的数组bool,即bool[2].
bar是一个包含4类型元素的数组foo,即foo[4]每个元素都是一个bool[2].
然后what_am_i是bool[4][2].
为了完成@Slardar Zhang对C的C++答案:
是的bool[4][2].
您可以通过以下任一方式验证它:
sizeof(what_am_i)/sizeof(*what_am_i) == 4sizeof(*what_am_i)/sizeof(**what_am_i) == 2