在 C 語言中,數組是由一組相同類型的元素組成的集合。每個數組元素本質上就是一個變量,我們通過「數組名[下標]」的形式來訪問它。下標必須是整型常量或整型表達式(如 a[5]、a[i+j]、a[i++]),若為浮點數編譯器會自動截斷取整。值得注意的是,C 語言不支援一次引用整個數組,必須透過迴圈逐個處理元素,例如輸出 10 個整數:
for (i = 0; i < 10; i++) printf("%d", a[i]);
直接寫 printf("%d", a); 是錯誤的,因為 a 代表數組首地址而非元素值。
初始化是在編譯階段為數組元素指定初始值,能減少執行期開銷。語法為:
static 類型 數組名[常量表達式] = {值, 值, ...};
static 表示靜態存儲類別,只有靜態或外部存儲的數組才能初始化。初始化規則如下:
static int a[10]={0,1,2,3,4};)。static int a[10]=1;)。static int a[]={1,2,3,4,5};)。動態賦值在程式執行期間透過 scanf 等函數逐個輸入元素值。下例輸入 10 個整數並找出最大值:
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);
}
另一個範例示範選擇排序法將 10 個數由大到小排序:
void main() {
int i, j, p, q, s, a[10];
printf("\n input 10 numbers:\n");
for (i = 0; i < 10; i++) scanf("%d", &a[i]);
for (i = 0; i < 10; i++) {
p = i; q = a[i];
for (j = i + 1; j < 10; j++)
if (q < a[j]) { p = j; q = a[j]; }
if (i != p) {
s = a[i]; a[i] = a[p]; a[p] = s;
}
printf("%d", a[i]);
}
}
程式先輸入資料,再以雙層迴圈比較交換,完成排序並輸出結果。