在c语言中,
int a[][5] = {1,2,3,4,5,6,7,8} 是合法数组声明,那么
int b[][][5] = {{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6}} 与
int b[2][][] = {{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6}}是否为合法数组声明?
只能第一维用[]其他维必须给出大小
追问int a[][1][1][1];
int b[][][1][1];
int c[][][2];//忽略初始化。
比如第一个合法,后两个不合法?
如果无初始化表必须定义每个维度
如果有初始化表必须定义除第一维外每个维度
追问哦。
字符串数组也是一样吧?
本回答被提问者采纳为什么?
追答b[][][5]初始化时,[5]至少为{0}
b[2][][]本身就错了,后边的不可以是空的,放前边可以空
追问意思是多维数组的最后一维必须声明元素个数,其它的纬度可以不用?
追答判断的关键是,能够分出每个维有几个元素
恩
追问int a[][1][1][1];
int b[][][1][1];
int c[][][2];//忽略初始化。
比如第一个合法,后两个不合法?
定义的时候其内部一定要是常亮
符号常量也可以,必须有具体值,所以上面都不合法
给数组赋值的时候,只有第一个正确,能知道各维的元素个数
追问哦,谢谢。