考試輔導(dǎo):C語言教程第四章:數(shù)組

字號:

第四章: 數(shù)組
    數(shù) 組
    數(shù)組在程序設(shè)計中,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組。在C語言中, 數(shù)組屬于構(gòu)造數(shù)據(jù)類型。一個數(shù)組可以分解為多個數(shù)組元素,這些數(shù)組元素可以是基本數(shù)據(jù)類型或是構(gòu)造類型。因此按數(shù)組元素的類型不同,數(shù)組又可分為數(shù)值數(shù)組、字符數(shù)組、指針數(shù)組、結(jié)構(gòu)數(shù)組等各種類別。
    本章介紹數(shù)值數(shù)組和字符數(shù)組,其余的在以后各章陸續(xù)介紹。數(shù)組類型說明 在C語言中使用數(shù)組必須先進(jìn)行類型說明。 數(shù)組說明的一般形
    式為: 類型說明符 數(shù)組名 [常量表達(dá)式],……; 其中,類型說明符是任一種基本數(shù)據(jù)類型或構(gòu)造數(shù)據(jù)類型。 數(shù)組名是用戶定義的數(shù)組標(biāo)識符。 方括號中的常量表達(dá)式表示數(shù)據(jù)元素的個數(shù),也稱為數(shù)組的長度。
    例如:
    int a[10]; 說明整型數(shù)組a,有10個元素。
    float b[10],c[20]; 說明實型數(shù)組b,有10個元素,實型數(shù)組c,有20個元素。
    char ch[20]; 說明字符數(shù)組ch,有20個元素。
    對于數(shù)組類型說明應(yīng)注意以下幾點(diǎn):
    1.數(shù)組的類型實際上是指數(shù)組元素的取值類型。對于同一個數(shù)組,其所有元素的數(shù)據(jù)類型都是相同的。
    2.數(shù)組名的書寫規(guī)則應(yīng)符合標(biāo)識符的書寫規(guī)定。
    3.數(shù)組名不能與其它變量名相同,例如:
    void main()
    {
    int a;
    float a[10];
    ……
    }
    是錯誤的。
    4.方括號中常量表達(dá)式表示數(shù)組元素的個數(shù),如a[5]表示數(shù)組a有5個元素。但是其下標(biāo)從0開始計算。因此5個元素分別為a[0],a[1],a[2],a[3],a[4]。
    5.不能在方括號中用變量來表示元素的個數(shù), 但是可以是符號常數(shù)或常量表達(dá)式。例如:
    #define FD 5
    void main()
    {
    int a[3+2],b[7+FD];
    ……
    }
    是合法的。但是下述說明方式是錯誤的。
    void main()
    {
    int n=5;
    int a[n];
    ……
    }
    6.允許在同一個類型說明中,說明多個數(shù)組和多個變量。
    例如: int a,b,c,d,k1[10],k2[20];
    數(shù)組元素的表示方法
    數(shù)組元素是組成數(shù)組的基本單元。數(shù)組元素也是一種變量, 其標(biāo)識方法為數(shù)組名后跟一個下標(biāo)。 下標(biāo)表示了元素在數(shù)組中的順序號。數(shù)組元素的一般形式為: 數(shù)組名[下標(biāo)] 其中的下標(biāo)只能為整型常量或整型表達(dá)式。如為小數(shù)時,C編譯將自動取整。例如,a[5],a[i+j],a[i++]都是合法的數(shù)組元素。 數(shù)組元素通常也稱為下標(biāo)變量。必須先定義數(shù)組, 才能使用下標(biāo)變量。在C語言中只能逐個地使用下標(biāo)變量, 而不能一次引用整個數(shù)組。 例如,輸出有10 個元素的數(shù)組必須使用循環(huán)語句逐個輸出各下標(biāo)變量:
    for(i=0; i<10; i++)  printf("%d",a[i]); 而不能用一個語句輸出整個數(shù)組,下面的寫法是錯誤的: printf("%d",a);
    void main()
    {
    int i,a[10];
    for(i=0;i<10;i++)
    a[i++]=2*i+1;
    for(i=9;i>=0;i--)
    printf("%d",a[i]);
    printf("\n%d %d\n",a[5.2],a[5.8]);
    }
    本例中用一個循環(huán)語句給a數(shù)組各元素送入奇數(shù)值,然后用第二個循環(huán)語句從大到小輸出各個奇數(shù)。在第一個 for語句中,表達(dá)式3省略了。在下標(biāo)變量中使用了表達(dá)式i++,用以修改循環(huán)變量。當(dāng)然第二個for語句也可以這樣作, C語言允許用表達(dá)式表示下標(biāo)。 程序中最后一個printf語句輸出了兩次a[5]的值, 可以看出當(dāng)下標(biāo)不為整數(shù)時將自動取整。數(shù)組的賦值給數(shù)組賦值的方法除了用賦值語句對數(shù)組元素逐個賦值外, 還可采用初始化賦值和動態(tài)賦值的方法。數(shù)組初始化賦值數(shù)組初始化賦值是指在數(shù)組說明時給數(shù)組元素賦予初值。 數(shù)組初始化是在編譯階段進(jìn)行的。這樣將減少運(yùn)行時間,提高效率。
    初始化賦值的一般形式為: static 類型說明符 數(shù)組名[常量表達(dá)式]={值,值……值}; 其中static表示是靜態(tài)存儲類型, C語言規(guī)定只有靜態(tài)存儲數(shù)組和外部存儲數(shù)組才可作初始化賦值(有關(guān)靜態(tài)存儲,外部存儲的概念在第五章中介紹)。在{ }中的各數(shù)據(jù)值即為各元素的初值, 各值之間用逗號間隔。例如: static int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相當(dāng)于a[0]=0;a[1]=1...a[9]=9;