一维数组初始化(初学者)
给数组赋值的方法除了用赋值语句对数组元素逐个赋值外,还可采用初始化赋值和动态赋值的方法。
数组初始化赋值是指在数组定义时给数组元素赋初值。数组初始化是编译阶段进行的。这样将减少运行时间,提高效率。
注:之前用到的赋值语句或输入语句给数组赋值是在运行时完成的。
一般形式为:类型说明符 数组名[常量表达式]={值、值……值}
例:int a[8]={0,1,2,3,4,5,6,7};
(1)所赋初值放在等号后的一对花括号中,数值类型必须与所说明的类型的一致,所赋初值之间用逗号隔开,系统将按这些数值的排列顺序,从a[0]元素开始依次给a数组中的元素赋值。以上语句将给a[0]赋初值0,给a[1]赋初值1……,给a[7]赋初值7。在指定初值中,第一个初值必定赋给下标为0的元素,因此,不可能跳过前面的元素给后面的元素赋初值。
(2)当所赋初值少于所定义数组的元素个数时,将自动给后面的元素补以初值0。
例:给a数组中所有元素赋初值0
int a[10]={0};
(3)对于字符型数组也同样补以初值0,即'\0'。
例:char c[5]={'@'};
相当于:
char c[5]={'@','\0','\0','\0','\0'};
(4)当所赋初值多于所定义数组的元素个数时,在编译时将给出出错信息。
(5)在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。
例:int a[5]={1,2,3,4,5};也可改为 int a[]={1,2,3,4,5};
在第二种写法中,花括弧中有五个数,系统就会据此自动定义a数组的长度为5。但若数组长度与提供初值的个数不相同,则数组长度不能省略。
数组初始化与未初始化比较:
#include<stdio.h> void main() { int i,a[5]={3,4,5},b[5]; printf("\n array a is:"); for(i=0;i<5;i++) { printf("%d",a[i]); } printf("\n array b is:"); for(i=0;i<5;i++) { printf("%d",b[i]); } }
动态赋值的方法:(程序演示,文字就不打了)
#include<stdio.h> void main() { int i,max,a[10]; printf("input 10 numbers;\n"); for(i=0;i<10;i++) { scanf("%d",&a[i]); } max=a[0]; for(i=1;i<10;i++) { if(a[i]>max) { max=a[i]; } } printf("maxmum=%d\n",max); }
注:与数组大小的动态定义进行区分,数组大小不允许动态定义。