我正在尝试设置一些不同的多维数组,但无法弄清楚为啥这不起作用

Posted

技术标签:

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

数组 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>> 或平面数组和手动索引计算。 【参考方案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 完全没有。我们初学者应该互相帮助。:)

以上是关于我正在尝试设置一些不同的多维数组,但无法弄清楚为啥这不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Java HashMap 关联多维数组无法创建或添加元素

我正在使用 C# 将 XML 文件转换为 CSV。我尝试了不同的方法,但无法弄清楚如何访问键名/值对

无法弄清楚为啥我的注销按钮不起作用(php)[重复]

在jQuery中通过ajax发送多维复选框数组

在 C 中将多维数组作为参数传递

Parse.com 云代码 - 无法弄清楚为啥 javascript 变量在所有数组项中具有相同的值