在定义数组时同时初始化,括号中数字可省略,如:int a[]={1,2,3,4,5};这个数组大小是5,范围是a[0]到a[4],但是如果你希望定义一个长度是10的数组,但只初始化前5个数据,这时候必须带上数字,如:int a[10]={1,2,3,4,5};这时候a数组一共有10个数字,前5个是1到5,后5个是0
或者二维数组,可以省略行数,但不可以省略列数,如int a[][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};这诗系统自动默认行数是3
还有就是形参中,可以省略一维数组的长度或者二维数组的行数,如:void fun(int a[],int b[][4]){//函数体神马的}这个函数中第一个参数是一维数组,只要实参传来一个一维数组即可接收到,不需要长度完全一样,同理,第二个参数也是,只要传来一个列数为4的二维数组即可
大概就以上3中情况吧希望对你有帮助
可以省略
例如:
int a[] = {1,2,3,4,5};
编译器会根据后面的元素的个数来确定数组的范围。
在参数传递中,可以写成 void fun(int a[])
这种形式,因为参数传递中已经退化为指针了,元素的个数需要其他参数确定。
要大体说什么时候可以省略,那就是你能够保证编译器能够知道你数组的元素个数才能省略。
int a[]={.....}; 可以在定义的时候给出初始值。可省略。
int b[][5]={...}; 同上,但是第二个不能省略。
a[]=3; 这样做就不对了,里面没有定位,不能省略。
b[][2]=2; 同上,不能省略。
a[x]=3;这样做也对,但是要保证变量x的值正确。C不会自动给你查越界。你自己要小心。
int a[]=; 可以在定义的时候给出初始值。可省略。
int b[][5]=; 同上,但是第二个不能省略。
a[]=3; 这样做就不对了,里面没有定位,不能省略。
b[][2]=2; 同上,不能省略。
a[x]=3;这样做也对,但是要保证变量x的值正确。C不会自动给你查越界。你自己要小心。
C99标准以前:
声明时可以省略: extern int myArray[];
定义时包含初始化可以省略:int myArray[]={1,2,3,4,5,6,7,8,9,0};//根据初始化数组元素的多少而默认大小
形参中的数组不需要数字
C99标准:
可以用表达式确定数组大小: int myArray[*];//但只能是局部变量,而且goto语句将不能使用