题目
6.如下3组数组的定义都是正确的。int a[];int a[]=(5);int a[]=(1,2,3,4,5);A. 对B. 错
6.如下3组数组的定义都是正确的。
int a[];
int a[]={5};
int a[]={1,2,3,4,5};
A. 对
B. 错
题目解答
答案
B. 错
解析
本题考查的是C语言中数组的定义规则。解题思路是依据C语言里数组定义的相关规定,对题目中给出的三组数组定义进行逐一分析判断。
对三组数组定义的分析
int a[];
在C语言中,当定义数组时,如果采用这种不指定数组大小且不进行初始化的方式,编译器无法确定数组的大小,这是不符合数组定义规则的。因为数组在内存中需要分配连续的存储空间,而不指定大小就无法确定要分配多少内存。所以int a[];这种定义是错误的。int a[]={5};
在C语言里,当使用初始化列表来定义数组时,如果没有显式指定数组的大小,编译器会根据初始化列表中元素的个数来自动确定数组的大小。这里初始化列表中有一个元素5,所以编译器会自动将数组a的大小确定为1。因此,int a[]={5};这种定义是正确的。int a[]={1,2,3,4,5};
同样,当使用初始化列表定义数组且未显式指定数组大小时,编译器会根据初始化列表中的元素个数来确定数组大小。此初始化列表中有5个元素,所以编译器会将数组a的大小确定为5。所以,int a[]={1,2,3,4,5};这种定义是正确的。
由于题目中说这三组数组的定义都是正确的,而实际上int a[];的定义是错误的,所以该说法是错误的。