一維陣列

前頁 目錄 下頁

宣告 引用陣列內的個別元素 在宣告陣列時把陣列內的元素初始化

宣告 Top

以下是一些宣告陣列的例子︰

C++ 版本 等同的 Pascal 版本
int a[5], b[10]; var
  a: array[0..4] of integer;
  b: array[0..9] of integer;

在方括號([])內的整數常數表示該陣列內有多少元素。在 C++ 中,下標一定是由 0 開始。


引用陣列內的個別元素 Top

在 C++ 中引用陣列內的個別元素,方法和 Pascal 一樣︰陣列的名稱,跟著是以方括號包著的下標(必須是整數算式)。例如,「a[4]」、「b[x + 1]」(假設 x 是一個整數變量)。


在宣告陣列時把陣列內的元素初始化 Top

要把陣列初始化,除了逐一把各元素初始化外,還可以在宣告陣列時做,方法是宣告語句後加上「=」,跟著的是以大括號包圍著的初始值(每個值用逗號分隔)。例如︰

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

前頁 目錄 下頁