給數組賦值的方法除了用賦值語句對數組元素逐個賦值外,還可採用初始化賦值和動態賦值的方法。 數組初始化賦值是指在數組定義時給數組元素賦初值。數組初始化是編譯階段進行的。這樣將減少運行時間,提高效率。 註:之前用到的賦值語句或輸入語句給數組賦值是在運行時完成的。 一般形式為:類型說明符 數組名[常量表達 ...
給數組賦值的方法除了用賦值語句對數組元素逐個賦值外,還可採用初始化賦值和動態賦值的方法。
數組初始化賦值是指在數組定義時給數組元素賦初值。數組初始化是編譯階段進行的。這樣將減少運行時間,提高效率。
註:之前用到的賦值語句或輸入語句給數組賦值是在運行時完成的。
一般形式為:類型說明符 數組名[常量表達式]={值、值……值}
例: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); }
註:與數組大小的動態定義進行區分,數組大小不允許動態定義。