C++ - 数组初始化器过多

13

我创建了一个类似这样的数组,但是它一直显示我有太多的初始化项。我该如何修复这个错误?

        int people[6][9] = {{0,0,0,0,0,0},
                        {0,0,0,0,0,0},
                        {0,0,0,0,0,0},
                        {0,0,0,0,0,0},
                        {0,0,0,0,0,0},
                        {0,0,0,0,0,0},
                        {0,0,0,0,0,0},
                        {0,0,0,0,0,0},
                        {0,0,0,0,0,0}};
3个回答

10
这里的问题是在数组声明部分中,行列索引被交换了,因此编译器感到困惑。
通常在声明多维数组时,第一个索引代表行,第二个索引代表列。
下面这种形式应该可以解决问题:
   int people[9][6] = {{0,0,0,0,0,0},
                    {0,0,0,0,0,0},
                    {0,0,0,0,0,0},
                    {0,0,0,0,0,0},
                    {0,0,0,0,0,0},
                    {0,0,0,0,0,0},
                    {0,0,0,0,0,0},
                    {0,0,0,0,0,0},
                    {0,0,0,0,0,0}};

@David,索引被交换了。 - chris
啊,你比我快。+1 - Rapptz
哇,谢谢你,这很简单,但我没注意到它 -_- - Xelza

8
int people[6][9] =
{
    {0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0},
};

C语言中的数组按行列顺序排列,因此在你定义的数组初始化器中有6行9个整数,而不是9行6个整数。

3
您将索引中的6和9混淆了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接