二维数组定义

2-dimensional array definition

本文关键字:定义 二维数组      更新时间:2023-10-16

根据我的理解,当我们定义一个数组时,我们需要指定它的大小

显式地

,以便编译器知道数组占用的所需内存。

因此,

案例1:

int a[][3]; //illegal as we will not know the size of the int array
a[0][1]=2;
a[1][3]=4;

但是当我添加这样的东西:

案例2:

int a[][3]={0}; //the compiler didn't complain at all
a[0][1]=2;
a[1][3]=4;

为什么在这种情况下编译器不显示任何错误信息?在情况2的定义只告诉编译器有多少列,但行数仍然未知?编译器不应该以与情况1相同的方式行事吗??有什么理由来解释这个吗?非常感谢

当你定义数组为

int a[][3]={0};

编译器将值赋给上述声明的数组:

int a[1][3]

所以它没有抱怨

同样,如果你这样做:

int a[][3]={0,2};

它将取:

int一个[2][3]