【问题标题】:I'm trying to setup a few different multidimensional arrays and cant figure out why this isnt working我正在尝试设置一些不同的多维数组,但无法弄清楚为什么这不起作用
【发布时间】:2025-11-28 11:20:03
【问题描述】:

数组 a 和 b 很好,c 表示初始化值过多,d 将 -858993460 分配给每个字段。感谢任何 cmets 和帮助。这是上课的,所以我想了解一下情况!

int a[2][2] = { {1, 2}, {3, 4} };
int b[2][3] = { {9, 8}, {7, 6, 5} };
int c[3][2] = { { 4, 4, 4 },{ 7, 7 } };
int d[3][3] = { {1, 1, 1}, {1, 1, 1} }; 

【问题讨论】:

  • int b[2][3] 表示“2 个 3 个整数数组”而不是“1 个 2 个整数数组后跟 1 个 3 个整数数组”。一旦你理解了这一点,你应该能够看到哪里出了问题。多维数组不能容纳不同大小的数组,如果在同一个容器中需要不同大小的数组,则需要使用std::vector<std::vector<int>> 或平面数组和手动索引计算。

标签: c++ arrays multidimensional-array initialization


【解决方案1】:

数组c 的元素具有int[2] 类型。因此,数组的每个元素最多必须使用两个初始化器来初始化。

代替

int c[3][2] = { { 4, 4, 4 },{ 7, 7 } };
                ^^^^^^^^^^^

举个例子

int c[3][2] = { { 4, 4 },{ 7, 7 } };
                ^^^^^^^^

数组 d 已正确初始化。

int d[3][3] = { {1, 1, 1}, {1, 1, 1} }; 

它的初始化等价于下面

int d[3][3] = 
{ 
   {1, 1, 1}, 
   {1, 1, 1},
   {0, 0, 0} 
}; 

您似乎得到了不正确的值,因为您在访问数组时使用了错误的索引。

这是一个用 C++ 编写的演示程序,用于显示数组。

#include <iostream>

int main()
{
    int a[2][2] = 
    { 
        { 1, 2 }, 
        { 3, 4 } 
    };
    int b[2][3] = 
    { 
        { 9, 8 }, 
        { 7, 6, 5 } 
    };
    int c[3][2] = 
    { 
        { 4, 4 },
        { 7, 7 } 
    };
    int d[3][3] = 
    { 
        { 1, 1, 1 }, 
        { 1, 1, 1 } 
    };

    for ( const auto &row : a )
    {
        for ( int x : row ) std::cout << x << ' ';
        std::cout << std::endl;
    }

    std::cout << std::endl;

    for ( const auto &row : b )
    {
        for ( int x : row ) std::cout << x << ' ';
        std::cout << std::endl;
    }

    std::cout << std::endl;

    for ( const auto &row : c )
    {
        for ( int x : row ) std::cout << x << ' ';
        std::cout << std::endl;
    }

    std::cout << std::endl;

    for ( const auto &row : d )
    {
        for ( int x : row ) std::cout << x << ' ';
        std::cout << std::endl;
    }

    std::cout << std::endl;
}    

程序输出是

1 2 
3 4 

9 8 0 
7 6 5 

4 4 
7 7 
0 0 

1 1 1 
1 1 1 
0 0 0 

未显式初始化的数组元素被隐式初始化为零。

【讨论】:

  • 感谢您这么快的回复。这绝对帮助我弄清楚了。我明白我做错了什么。再次感谢!
  • @phillis 完全没有。我们初学者应该互相帮助。:)
最近更新 更多