简体   繁体   English

用2维数组初始化3维数组

[英]Init a 3 dimensional array with 2 dimensional arrays

Sorry if this may seem like a stupid question. 抱歉,这似乎是一个愚蠢的问题。

I had this code: 我有以下代码:

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

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

Now I changed array1,array2,array3 to be a 2 dimensional array: 现在,我将array1,array2,array3更改为二维数组:

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

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

How can I init array with 2 dimensional array? 如何使用二维数组初始化数组?

I also tried the following which didn't work: 我还尝试了以下无效的方法:

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

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

Thanks! 谢谢!

C++11 makes this easy: C ++ 11使这变得容易:

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


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

which is the equivalent of the ( unreadable in my opinion ) syntax 这相当于( 我认为不可读 )语法

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

The rules, as usual, are the same you can find in every decent C++ book : 和往常一样,规则在每本不错的C ++书中都可以找到:

  • Operator precedence 运算符优先级
  • Type decaying 类型衰减

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM