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) == 4
sizeof(*what_am_i)/sizeof(**what_am_i) == 2