陣列是為了儲存一筆連續的資料而宣告的。假如我今天有五個學生的成績,一一宣告成變數儲存不是一個好方法,在做資料處理時也不方便。這時如果我們宣告一個陣列運來儲存這些資料,一切都變得方便許多。下面是陣列簡單示範:
#include <stdio.h>
int main() {
int grade[5]={60,70,80,90,100}; //宣告一個儲存5個int型別的grade陣列
//int grade[]={60,70,80,90,100}; 這樣也可以,編譯器會自動判斷陣列大小。
for(int i=0; i<5; i++)
{
printf("第%d位學生的成績是:%d分\n",i+1,grade[i]);
}
return 0;
}
grade[索引值]
來存取,很明顯地,你能看出陣列第一個數值的索引值為0,陣列第五個數值的索引值為4,這個觀念需要了解。二維陣列大概可以這樣想像:
而三維陣列就是由多個二維陣列所組成。
上面已經示範了一維陣列,接下來講多維陣列的合法宣告。
int arr[3][4]; // 3 列 4 行的整數陣列,裡面是記憶體殘值
#include <stdio.h>
int main() {
int rows = 3, cols = 4;
int arr[rows][cols]; // 使用變數來定義二維陣列的大小,這樣宣告的話,沒辦法初始化數值。
//以下為正確做法
for(int i = 0; i < rows; i++)
{
for(int j = 0; j < cols; j++)
{
arr[i][j] = 0;
}
}
return 0;
}
int arr[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
int arr[3][4] = {0};
int arr[3][4] = {{1},{2},{3}};
/*
只賦予第一個數值,其餘補0
陣列內容為
{1, 0, 0, 0},
{2, 0, 0, 0},
{3, 0, 0, 0}
*/
int arr[][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
int arr[2][3][4]; // 2 個平面,每個平面有 3 X 4 個元素
int arr[2][3][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}}
};
int arr[][3][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}}
};
#include <stdio.h>
int main() {
// 定義一個 2x3x4 的三維陣列,總共有 2 個平面,每個平面 3 列 4 行
int arr[2][3][4] = {
{
{1},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24}
}
};
// 三層的 for 迴圈,分別控制 depth, row, column
for (int d = 0; d < 2; d++) { // 控制深度 (第幾個平面)
printf("平面 %d:\n", d + 1);
for (int i = 0; i < 3; i++) { // 控制列
for (int j = 0; j < 4; j++) { // 控制行
printf("arr[%d][%d][%d] = %2d ", d, i, j, arr[d][i][j]);
}
printf("\n"); // 換行,代表一行結束
}
printf("\n"); // 平面結束後,額外換行
}
return 0;
}
/* 輸出
平面 1:
arr[0][0][0] = 1 arr[0][0][1] = 0 arr[0][0][2] = 0 arr[0][0][3] = 0
arr[0][1][0] = 5 arr[0][1][1] = 6 arr[0][1][2] = 7 arr[0][1][3] = 8
arr[0][2][0] = 9 arr[0][2][1] = 10 arr[0][2][2] = 11 arr[0][2][3] = 12
平面 2:
arr[1][0][0] = 13 arr[1][0][1] = 14 arr[1][0][2] = 15 arr[1][0][3] = 16
arr[1][1][0] = 17 arr[1][1][1] = 18 arr[1][1][2] = 19 arr[1][1][3] = 20
arr[1][2][0] = 21 arr[1][2][1] = 22 arr[1][2][2] = 23 arr[1][2][3] = 24
*/
陣列的內容大致如上,當然,陣列若配上指標,玩法會變得很多樣化,之後的章節會介紹到指標。