
宣告陣列須先指明這個陣列為何種資料型態,接著是陣列名稱,然後用中括弧圍起來的元素數量。注意,中括弧 [] 在 C 語言中為陣列專用,因此帶有中括弧的識別字名稱即為陣列,陣列宣告或定義無須特別的關鍵字。
下例宣告陣列同時指派初值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <stdio.h> int main( void ) { int a[5] = {69, 124, 25, 323, 54}; int i; for (i = 0; i < 5; i++) { printf ( "a[%d] = %d\n" , i, a[i]); } return 0; } /* 《程式語言教學誌》的範例程式 檔名:a.c 功能:示範陣列的宣告與使用 作者:張凱慶 時間:西元2010年4月 */ |
編譯後執行,如下

第 5 行
5 | int a[5] = {69, 124, 25, 323, 54}; |
利用大括弧圍住所有的陣列元素,同時每個元素用號分開。陣列元素也可以各自分別給值,如下
int a[5]; a[0] = 69; a[1] = 124; a[2] = 25; a[3] = 323; a[4] = 54; |
其中, a[0] 中括弧內為陣列的索引,指明是第 0 個陣列元素, C 語言的陣列元素是從 0 開始索引的,因此 5 個陣列元素的索引依次為 0 1 2 3 4 。
如果陣列所儲存的數值是由使用者輸入,或是需要經過計算,就需要利用類似上述的方法給值。
陣列名稱也就是指標,如下例改為由指標操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <stdio.h> int main( void ) { int a[5] = {69, 124, 25, 323, 54}; int *iPtr = a; while (*iPtr != '\0' && *iPtr > 0) { printf ( "a-%p = %d\n" , iPtr, *iPtr); iPtr++; } return 0; } /* 《程式語言教學誌》的範例程式 檔名:arrayPtr.c 功能:示範使用指標操作陣列 作者:張凱慶 時間:西元2010年4月 */ |
編譯後執行,如下

第 6 行
6 | int *iPtr = a; |
這是將陣列名稱所具有的值指派給一個指標變數,由於陣列名稱就是指標,這個運算是合法的,但是陣列名稱不能直接拿來做算術運算,所以這裡用另一個指標變數當控制變數。
第 8 行
8 | while (*iPtr != '\0' && *iPtr > 0) { |
當陣列元素的值等於 '\0' 的時候陣列就會結束,底下的迴圈印出每個陣列元素的記憶體位址與所儲存的整數。
陣列也可以是多維的,這是說,陣列中也可以陣列當作元素,如下為二維陣列的例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <stdio.h> int main( void ) { int i , j; int table[10][10]; for (i = 0; i < 10; i++) { for ( j = 0; j < 10; j++) { table[i][j] = i * j; } } printf ( "3 * 3 = %2d\n" , table[3][3]); printf ( "4 * 8 = %2d\n" , table[4][8]); printf ( "5 * 6 = %2d\n" , table[5][6]); printf ( "7 * 8 = %2d\n" , table[7][8]); printf ( "9 * 2 = %2d\n" , table[9][2]); return 0; } /* 《程式語言教學誌》的範例程式 檔名:array2d.c 功能:示範二維陣列的使用 作者:張凱慶 時間:西元2010年4月 */ |
編譯後執行,如下

二維陣列就需要兩層的索引,就是識別字名稱後連續兩個中括弧便代表二維陣列,第一個索引表示原始陣列中的第幾個陣列,第二個索引則是該第幾個陣列中的元素項目。
字元陣列,也就是字串,經常直接用指標來處理,如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <stdio.h> int main( void ) { char *aPtr = "Time and tide wait for no man." ; while (*aPtr != '\0' ) { if (*aPtr == ' ' ) { printf ( "\n" ); aPtr++; continue ; } if (*aPtr == '.' ) { printf ( "\n" ); break ; } printf ( "%c" , *aPtr); aPtr++; } return 0; } /* 《程式語言教學誌》的範例程式 檔名:arraychar.c 功能:示範字元陣列的使用 作者:張凱慶 時間:西元2010年4月 */ |
編譯後執行,如下

這個程式跳過空格,一行列印一個英文單字,然後碰到句點時結束迴圈,也隨之結束程式的執行。
沒有留言:
張貼留言