一維陣列

文章推薦指數: 80 %
投票人數:10人

資料型態可以是 int 、 float 、 char 等,以下是幾個宣告的範例: int number[10]; // 宣告10 個元素的整數陣列 double score[10]; // 宣告10 個元素的浮點數陣列 ... 回C語言目錄 現在要整理全班的程式設計小考成績,你希望寫個小程式,全班共有40名學生,所以必須有40個變數來儲存學生的成績,現在問題來了,根據之前學過的,難道要宣告40個名稱不同的變數來儲存學生的成績資料嗎? 當然不會這麼麻煩的,C提供陣列(Array),可以宣告一個以索引(index)作為識別的資料結構,宣告陣列的方式如下: 資料型態名稱[大小]; 資料型態可以是int、float、char等,以下是幾個宣告的範例: intnumber[10];//宣告10個元素的整數陣列 doublescore[10];//宣告10個元素的浮點數陣列 charascii[10];//宣告10個元素的字元陣列 這是靜態陣列的宣告方式,事先決定了陣列長度,在C99前,不可以使用變數來事後決定陣列的長度,如果要動態宣告陣列長度,可以使用一些資料結構與動態記憶體宣告來解決陣列大小必須固定的問題,這可以參考〈malloc、free、calloc與realloc〉。

C99加入了可變長度的陣列型態(variablelengtharraytype),可以使用變數來指定陣列長度,而變數值實際上可以是執行時期運算值,在支援的編譯器下,以下程式碼是可行的: intlen=0; scanf("%d",&len); intarr[len]; 不過C11卻將這個功能定為非必要功能,編譯器實作不一定得支援,然而大多數編譯器都支援這個功能,如果使用的編譯器真的不支援,那就得回歸動態配置記憶體的方式。

宣告陣列之後,陣列所配置到的記憶體空間中所儲存的數是未知的,所以在初始陣列元素值之前,當中的元素值是未知的,如果在宣告變數時尚未決定陣列中的值,可以這麼宣告陣列: intnumber[10]={0}; doublescore[10]={0.0}; charascii[10]={'\0'}; 上面的幾個宣告,整數陣列中的元素都會被初始為0,浮點數陣列則會被初始為0.0,字元陣列則會被初始為空字元('\0'),在宣告陣列時初始陣列元素,可以避免程式存取到非預期的數值。

也可以在宣告陣列時初始所有的陣列值,例如: intnumber[5]={0,1,2,3,4}; doublescore[5]={87.0,78.0,99.5,69.5,82.5}; charascii[5]={'A','B','C','D','E'}; 當要存取陣列中的值時,可以使用下標(Subscript)運算子[]加上索引(Index),指定要存取的陣列元素,C的索引值一律由0開始,而不是由1開始,這點初學者必須特別注意,下面這個簡單的程式示範如何使用索引存取陣列元素: #include #defineLENGTH10 intmain(void){ intarr[LENGTH]={0}; inti; for(i=0;i intmain(void){ intnumber[5]={0,1,2,3,4}; intlength=sizeof(number)/sizeof(number[0]); for(inti=0;i



請為這篇文章評分?