二维数组定义

时间:2015-10-14 16:40:22

标签: c++ arrays

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

显式,因此编译器将知道数组占用所需的内存。

因此,

案例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相同的方式行事吗?有什么理由解释这个吗?非常感谢你

1 个答案:

答案 0 :(得分:5)

将数组定义为

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

编译器将值分配给上面声明的数组:

int a[1][3]

所以没有抱怨

同样如果你喜欢这样:

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

需要:

int a [2] [3]