数组初始化时,下面说法错误的是______。

数组初始化时,下面说法错误的是______。
A.当对一维数组的全部元素赋初值时,可以不指定长度
B.当对二维数组的全部元素赋初值时,可以省略维数
C.用字符串对一维字符数组赋值时,可以不指定长度
D.用字符串对二维字符数组赋值时,可以省略维数

要解析!!谢谢!!
D选项怎么错了?谢谢!!

D错误

a 正确 因为编译器能自动计算长度
b 也对 这里是不指定维数(行),不是不指定长度(列),那么维数也能计算出来
c 正确,字符串的长度也能自动计算
d错误,因为abc都正确

int a[]={1,2,3};
int a2[][3]={1,2,3,4,5,6};维数可省,长度不可
char a3[]="adfaadf";
char a4[]={"adfaadf"};
D错误:
char a5[][100]={"adfaadf","dd"};原因不明,调试一下,果然是错的
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-01-03
B
只可以省略行,不能省略列
如a[][2]={1,2,3};那这就是一个3行2列的二位数组
a[0][0]=1,a[0][1]=0
a[1][0]=2,a[1][1]=0
a[2][0]=3,a[2][1]=0;
第2个回答  2010-01-04
不可以省略列,即使是三维的也就是最高维的可以不定义长度,剩下的两维也必须有长度
第3个回答  2010-01-03
D错的原因是:只能省略第一维,第二维必须有值
第4个回答  2015-02-05
int a[][] = {1. 2. 3};
int b[][][] = {1, 2, 3};
编译错误:
declaration of ‘a’ as multidimensional array must have bounds for all dimensions except the first
declaration of ‘b’ as multidimensional array must have bounds for all dimensions except the first

所以不管几维,除了 第一维都不能少
相似回答