根据我的理解,当我们定义一个数组时,我们需要具体说明它的大小
显式,因此编译器将知道数组占用所需的内存.
因此,
情况1:
int a[][3]; //illegal as we will not know the size of the int array
a[0][1]=2;
a[1][3]=4;
Run Code Online (Sandbox Code Playgroud)
但是当我添加这样的东西时:
案例2:
int a[][3]={0}; //the compiler didn't complain at all
a[0][1]=2;
a[1][3]=4;
Run Code Online (Sandbox Code Playgroud)
为什么编译器在这种情况下不会显示任何错误消息?情况2中的定义只告诉编译器有多少列,但行数仍然未知?编译器不应该以与案例1相同的方式行事吗?有什么理由解释这个吗?非常感谢
当您将数组定义为
int a[][3]={0};
Run Code Online (Sandbox Code Playgroud)
编译器将值分配给上面声明的数组:
int a[1][3]
Run Code Online (Sandbox Code Playgroud)
所以它没有抱怨
同样,如果你喜欢这样:
int a[][3]={0,2};
Run Code Online (Sandbox Code Playgroud)
它需要:
int a [2] [3]
归档时间: |
|
查看次数: |
55 次 |
最近记录: |