[英]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 ++书中都可以找到:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.