
- 計算機程式設計教程
- 計算機程式設計 - 首頁
- 計算機程式設計 - 概述
- 計算機程式設計 - 基礎
- 程式設計 - 環境
- 程式設計 - 基本語法
- 程式設計 - 資料型別
- 計算機程式設計 - 變數
- 計算機程式設計 - 關鍵字
- 計算機程式設計 - 運算子
- 計算機程式設計 - 決策
- 計算機程式設計 - 迴圈
- 計算機程式設計 - 數字
- 程式設計 - 字元
- 計算機程式設計 - 陣列
- 計算機程式設計 - 字串
- 計算機程式設計 - 函式
- 計算機程式設計 - 檔案 I/O
- 計算機程式設計 - 總結
- 計算機程式設計資源
- 程式設計 - 快速指南
- 計算機程式設計 - 資源
- 程式設計 - 討論
計算機程式設計 - 陣列
考慮這樣一種情況:我們需要儲存五個整數。如果我們使用程式設計的簡單變數和資料型別概念,那麼我們需要五個 `int` 資料型別的變數,程式如下所示:
#include <stdio.h> int main() { int number1; int number2; int number3; int number4; int number5; number1 = 10; number2 = 20; number3 = 30; number4 = 40; number5 = 50; printf( "number1: %d\n", number1); printf( "number2: %d\n", number2); printf( "number3: %d\n", number3); printf( "number4: %d\n", number4); printf( "number5: %d\n", number5); }
這很簡單,因為我們只需要儲存五個整數。現在假設我們需要儲存 5000 個整數。我們要使用 5000 個變數嗎?
為了處理這種情況,幾乎所有程式語言都提供了一個名為陣列的概念。陣列是一種資料結構,可以儲存相同資料型別的固定大小的元素集合。陣列用於儲存資料集合,但通常將陣列視為相同型別變數的集合更有用。
無需宣告單個變數,例如 number1、number2、...、number99,只需宣告一個整數型別的陣列變數 `number`,並使用 number[0]、number[1] 和 ...、number[99] 來表示單個變數。這裡,0、1、2、.....99 是與 `number` 變數關聯的索引,它們用於表示陣列中可用的單個元素。
所有陣列都由連續的記憶體位置組成。最低地址對應於第一個元素,最高地址對應於最後一個元素。

建立陣列
要在 C 中建立陣列變數,程式設計師需要指定元素的型別和要儲存在該陣列中的元素數量。以下是 C 程式設計中建立陣列的簡單語法:
type arrayName [ arraySize ];
這稱為一維陣列。`arraySize` 必須是一個大於零的整數常量,`type` 可以是任何有效的 C 資料型別。例如,現在要宣告一個名為 `number` 的 10 個元素的 `int` 型別陣列,可以使用以下語句:
int number[10];
這裡,`number` 是一個數組變數,足以容納多達 10 個整數。
初始化陣列
您可以在 C 中逐個初始化陣列,也可以使用以下單一語句進行初始化:
int number[5] = {10, 20, 30, 40, 50};
大括號 { } 中的值的數量不能大於我們在方括號 [ ] 中為陣列宣告的元素數量。
如果您省略陣列的大小,則會建立一個足夠大的陣列來容納初始化。因此,如果您編寫:
int number[] = {10, 20, 30, 40, 50};
您將建立與前面示例中完全相同的陣列。以下是一個為陣列分配單個元素的示例:
number[4] = 50;
上述語句將陣列中的第 5 個元素賦值為 50。所有陣列的第一個元素的索引都是 0,也稱為基索引,陣列的最後一個索引將是陣列的總大小減 1。下圖顯示了我們上面討論的陣列的圖示:

訪問陣列元素
透過索引陣列名稱來訪問元素。這是透過在陣列名稱之後方括號中放置元素的索引來完成的。例如:
int var = number[9];
上述語句將從陣列中獲取第 10 個元素並將值賦給 `var` 變數。以下示例使用了上述三個概念,即建立、賦值和訪問陣列:
#include <stdio.h> int main () { int number[10]; /* number is an array of 10 integers */ int i = 0; /* Initialize elements of array n to 0 */ while( i < 10 ) { /* Set element at location i to i + 100 */ number[ i ] = i + 100; i = i + 1; } /* Output each array element's value */ i = 0; while( i < 10 ) { printf("number[%d] = %d\n", i, number[i] ); i = i + 1; } return 0; }
編譯並執行上述程式碼後,將產生以下結果:
number[0] = 100 number[1] = 101 number[2] = 102 number[3] = 103 number[4] = 104 number[5] = 105 number[6] = 106 number[7] = 107 number[8] = 108 number[9] = 109
Java 中的陣列
以下是使用 `new` 運算子在 Java 中建立陣列的方式略有不同的等效 Java 程式。
您可以嘗試執行以下程式以檢視輸出,該輸出必須與上述 C 示例生成的相同。
public class DemoJava { public static void main(String []args) { int[] number = new int[10]; int i = 0; while( i < 10 ) { number[ i ] = i + 100; i = i + 1; } i = 0; while( i < 10 ) { System.out.format( "number[%d] = %d\n", i, number[i] ); i = i + 1; } } }
執行上述程式後,將產生以下結果:
number[0] = 100 number[1] = 101 number[2] = 102 number[3] = 103 number[4] = 104 number[5] = 105 number[6] = 106 number[7] = 107 number[8] = 108 number[9] = 109
Python 中的陣列(列表)
Python 沒有陣列的概念,而是提供了一種名為列表的其他資料結構,它提供了與任何其他語言中的陣列類似的功能。
以下是 Python 編寫的等效程式:
# Following defines an empty list. number = [] i = 0 while i < 10: # Appending elements in the list number.append(i + 100) i = i + 1 i = 0 while i < 10: # Accessing elements from the list print "number[", i, "] = ", number[ i ] i = i + 1
執行上述程式後,將產生以下結果:
number[ 0 ] = 100 number[ 1 ] = 101 number[ 2 ] = 102 number[ 3 ] = 103 number[ 4 ] = 104 number[ 5 ] = 105 number[ 6 ] = 106 number[ 7 ] = 107 number[ 8 ] = 108 number[ 9 ] = 109