以下是一些宣告陣列的例子︰
C++ 版本 | 等同的 Pascal 版本 |
int a[5], b[10]; | var a: array[0..4] of integer; b: array[0..9] of integer; |
在方括號([])內的整數常數表示該陣列內有多少元素。在 C++ 中,下標一定是由 0 開始。
在 C++ 中引用陣列內的個別元素,方法和 Pascal 一樣︰陣列的名稱,跟著是以方括號包著的下標(必須是整數算式)。例如,「a[4]」、「b[x + 1]」(假設 x 是一個整數變量)。
要把陣列初始化,除了逐一把各元素初始化外,還可以在宣告陣列時做,方法是宣告語句後加上「=」,跟著的是以大括號包圍著的初始值(每個值用逗號分隔)。例如︰
C++ 版本 | 等同的 Pascal 版本 |
int n[5] = {14, 23, 7, 10, 5}; | var n: array[0..4] of integer; ... n[0] := 14; n[1] := 23; n[2] := 7; n[3] := 10; n[4] := 5; |
如果陣列不在宣告時被初始化,那麼陣列內各元素必須分開初始化。
如果陣列元素的數目比初始值的數目多,剩下的元素的初始值自動為零。例如︰
C++ 版本 | 等同的 Pascal 版本 |
int n[5] = {14, 23}; | var n: array[0..4] of integer; ... n[0] := 14; n[1] := 23; n[2] := 0; n[3] := 0; n[4] := 0; |
如果陣列在宣告時未經初始化,陣列內儲存的值不能預知,直至陣列的元素被分開地初始化。
如果初始值的數目比陣列內的元素數目多,這樣會有編譯時的錯誤。
如果在陣列宣告的語句中沒有把陣列的大小表示出來,陣列必須立即透過初始值表被初始化。陣列內元素的數目就是和初始值表內的初始值數目相等。例如,以下語句說明了陣列內共有五個元素(下標範圍由
0 至 4)︰
int x[] = {4, 7, 10, 8, 5};
下面的程序範例使用一維陣列去儲存奇數︰
C++ 版本 | Pascal 版本 |
#include <iostream.h> #define MAX 10 main() { int a[MAX], i; for (i = 0; i < MAX; i++) a[i] = 2 * i + 1; cout << "Subscript? (-ve value to quit) "; cin >> i; while (i >= 0) { if (i >= MAX) cout << "Subscript out of range!" << endl; else cout << "a[" << i << "]: " << a[i] << endl; cout << "Subscript? (-ve value to quit) "; cin >> i; } return 0; } |
program prog_24(input, output); const MAX = 10; var a: array[0..MAX - 1] of integer; i: integer; begin for i := 0 to MAX - 1 do a[i] := 2 * i + 1; write('Subscript? (-ve value to quit) '); readln(i); while i >= 0 do begin if i >= MAX then writeln('Subscript out of range!') else writeln('a[', i, ']: ', a[i]); write('Subscript? (-ve value to quit) '); readln(i) end end. |
輸出範例(紅色的文字由使用者輸入)︰ | |
Subscript? (-ve value to quit) 5 a[5]: 11 Subscript? (-ve value to quit) 9 a[9]: 19 Subscript? (-ve value to quit) 10 Subscript out of range! Subscript? (-ve value to quit) 0 a[0]: 1 Subscript? (-ve value to quit) -2 |