我有这个数组
int sequence[2][3][2][2][50][2] = {
{
{1},
{{
{2, 4},
{3, 5}
},
{255,0,0}
}
},
{
{2},
{{
{3, 4},
{2, 6}
},
{0,0,255}
}
}
};
每当我尝试使用
索引第一个多维数组时int frame[2] = {sequence[1]}
我收到此错误"' int(*)[2] [2] [50] [2]'到' int' [-fpermissive]
我做错了什么?
答案 0 :(得分:1)
每当我尝试使用
索引第一个多维数组时
int frame[2] = {sequence[1]}
让我们简化您使用的语法:
int frame[2] = {/*list of ints*/}
使用括号括起的整数列表初始化一个2 int
的一维数组。
具有arity k
的最外层多维数组的元素也是一个多维数组(具有arity k-1
)。它不是int
。
因此,如何索引多维数组没有任何问题。有问题的是,如果int
以多维数组作为第一个值,则尝试初始化数组。
我应该如何初始化呢?
无法回答,因为不清楚要用于初始化的多维数组中的哪个整数值。
这是一种初始化frame
的语法正确方法:
int frame[2] = {sequence[0][0][0][0][0][0], sequence[0][0][0][0][0][1]};
它使用最外层数组第一个子数组的第一个子数组的第一个子数组的第一个子数组的第一个子数组中的值。