假设我在 main 之外静态声明了这些。
const int R = 5;
const int C = 3;
char zero[R][C] = {' ', '-', ' ',
'|', ' ', '|',
' ', ' ', ' ',
'|', ' ', '|',
' ', '-', ' '};
char one[R][C] = {' ', ' ', ' ',
' ', ' ', '|',
' ', ' ', ' ',
' ', ' ', '|',
' ', ' ', ' '};
char two[R][C] = {' ', '-', ' ',
' ', ' ', '|',
' ', '-', ' ',
'|', ' ', ' ',
' ', '-', ' '};
我想做这样的事情:
char ho[3][R][C] = {zero, one, two}
所以我可以做 ho[0], ho[1], ho[2] 来得到相应的二维数组。并执行 ho[0][1][2] 以获取数组中的条目。 (我不想做 ho[0][1*2])
我真的很困惑 'ho' 的数据类型应该是什么。
我用谷歌搜索并尝试过
char (*ho[3])[R][C] = {(char(*)[R][C])zero, (char(*)[R][C])one, (char(*)[R][C])two};
但这似乎并没有达到我想要的效果。
最佳答案
我可以想到几个选择。
使用 typedef 指向二维数组的指针。然后使用 typedef
的数组。
typedef char (*ptr)[C];
ptr ho[3] = {zero, one, two};
您可以在一个庞大的语句中初始化整个 3D 数组。
const int R = 5;
const int C = 3;
char ho[3][R][C] =
{
{' ', '-', ' ',
'|', ' ', '|',
' ', ' ', ' ',
'|', ' ', '|',
' ', '-', ' '},
{' ', ' ', ' ',
' ', ' ', '|',
' ', ' ', ' ',
' ', ' ', '|',
' ', ' ', ' '},
{' ', '-', ' ',
' ', ' ', '|',
' ', '-', ' ',
'|', ' ', ' ',
' ', '-', ' '}
};
关于c++ - 如何在 C++ 中静态初始化二维数组的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26479276/