当系统为所定义的数组在内存中开辟一串连续的存储单元时,这些存储单元中并没有确定的值。可以采用以下形式,在定义语句中为所定义数组的各元素赋初值:
int a[8]={0,1,2,3,4,5,6,7};
所赋初值放在等号后的一对花括号中,数值类型必须与所说明的类型一致,所赋初值之间用逗号隔开,系统将按这些数值的排列顺序,从a[0]元素开始依次给a数组中的元素赋初值。以上语句将给a[0]赋初值0,给a[1]赋初值1,……,给a[7]赋初值7。在指定初值时,第一个初值必定赋给下标为0的元素,因此,不可能跳过前面的元素给后面的元素赋初值。
当所赋初值少于所定义数组的元素个数时,将自动给后面的元素补以初值0。例如,以下定义语句将给a数组中所有元素赋初值0:
int a[10]={0};
对于字符型数组也同样补以初值0,即′\0′。例如以下定义:
char c[5]={′@′};
相当于:
char c[5]={′@′,′\0′,′\0′,′\0′,′\0′};
当所赋初值多于所定义数组的元素个数时,在编译时将给出出错信息。
c语言规定可以通过赋初值来定义数组的大小,这时数组说明符的一对方括号中可以不指定数组的大小。例如:
int a[]={0,0,0,0,0,0,0,0};
以上语句的一对花括号中出现了8个0,它隐含地定义了a数组含有8个元素,此定义语句等价于以下语句:
int a[8]={0};
例9.1 编写程序,定义一个含有30个元素的int类型数组。依次给数组元素赋奇数1、3、
5、…,然后按每行l0个数顺序输出,最后再按每行10个数逆序输出。
本题示例了如何利用for循环的循环控制变量,顺序或逆序地逐个引用数组元素,这是对数组元素进行操作的基本算法。另外本题也示例了在连续输出数组元素数据的过程中,如何利用循环控制变量来进行换行的两种方法。