初始化具有2维阵列的3维阵列

时间:2014-10-14 10:41:46

标签: c++ arrays

很抱歉,如果这看起来像是一个愚蠢的问题。

我有这段代码:

char array1[2];
char array2[2];
char array3[2];

char *array[] = {
array1,
array2,
array3,
}

现在我将array1,array2,array3更改为二维数组:

char array1[2][2];
char array2[2][2];
char array3[2][2];

我收到以下错误: error: cannot convert 'char (*)[2]' to 'char*' in initialization

如何使用二维数组初始化数组?

我还尝试了以下哪些不起作用:

char *array[2][2] = {
    array1,
    array2,
    array3,
    }

char array[][2][2] = {
    array1,
    array2,
    array3,
    }

谢谢!

1 个答案:

答案 0 :(得分:2)

C ++ 11使这很简单:

char array1[2][2];
char array2[2][2];
char array3[2][2];


std::decay<decltype(array1)>::type array[] = {
  array1,
  array2,
  array3,
};

相当于(我认为不可读)语法

char (* array [])[2] = {
  array1,
  array2,
  array3,
};

与往常一样,规则与every decent C++ book中的规则相同:

  • 运营商优先级
  • 键入衰减