- 計算機程式設計教程
- 計算機程式設計 - 首頁
- 計算機程式設計 - 概述
- 計算機程式設計 - 基礎
- 程式設計 - 環境
- 程式設計 - 基本語法
- 程式設計 - 資料型別
- 計算機程式設計 - 變數
- 計算機程式設計 - 關鍵字
- 計算機程式設計 - 運算子
- 計算機程式設計 - 決策
- 計算機程式設計 - 迴圈
- 計算機程式設計 - 數字
- 程式設計 - 字元
- 計算機程式設計 - 陣列
- 計算機程式設計 - 字串
- 計算機程式設計 - 函式
- 計算機程式設計 - 檔案 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