---
# System prepended metadata

title: 資料結構：Array
tags: [資料結構筆記]

---

---
tags: 資料結構筆記
---

# 資料結構：Array

## 什麼是Array？

Array（陣列）是一種能夠儲存相同資料型別的多個元素的資料結構。每個元素都有一個獨特的索引，可以用來訪問和操作這些元素。

## 宣告和初始化Array

在C語言中，我們可以這樣宣告和初始化一個Array：
```C=
int numbers[5]; // 宣告一個包含5個整數的Array
```

這將創建一個包含5個整數的Array，索引範圍從0到4。

我們也可以在宣告的同時初始化Array：
```C=
int numbers[5] = {1, 2, 3, 4, 5}; // 初始化一個包含1到5的整數Array
```

## 訪問Array元素

要訪問Array中的特定元素，我們使用它的索引：
```C=
int first_element = numbers[0]; // 存取第一個元素
int second_element = numbers[1]; // 存取第二個元素
```
## 修改Array元素的值

我們可以通過索引來修改Array中的元素：
```C=
numbers[2] = 10; // 將第三個元素的值設為10
```
## 遍歷Array

遍歷（Traversal）是指**按照一定的順序依次訪問一個資料結構中的所有元素**。在程式設計中，通常使用迴圈來實現遍歷，以便能夠依次處理每個元素。

舉例來說，如果你有一個包含多個數字的Array，你可能會想要依次檢查每個數字，以進行特定的運算或者輸出。

我們可以使用迴圈來遍歷Array中的所有元素：
```C=
for(int i = 0; i < 5; i++) {
    printf("%d ", numbers[i]);
}
```
這個程式片段中的 **for** 迴圈用於遍歷 **numbers** 這個Array，依次取出每個元素並打印它們出來。所以，遍歷就是按照一定的順序處理Array中的每個元素。

這個迴圈會依次打印出Array中的所有元素。

## 注意事項

- Array的索引從0開始，所以一個包含5個元素的Array的索引範圍是0到4。
- 在使用Array之前，請確保它已被初始化，否則它的值將是不確定的。

---

# 一維陣列

## 什麼是一維陣列？

一維陣列是一種能夠儲存相同資料型別的多個元素的資料結構。不同於一個變數只能儲存一個值，一維陣列可以儲存多個相同類型的值。

## 宣告和初始化一維陣列

在C語言中，我們可以宣告和初始化一維陣列如下：

```C=
int numbers[5]; // 宣告一個包含5個整數的一維陣列
```
這將創建一個包含5個整數的一維陣列，索引範圍從0到4。我們也可以在宣告的同時初始化一維陣列：
```C=
int numbers[5] = {1, 2, 3, 4, 5}; // 初始化一個包含1到5的整數一維陣列
```
## 存取一維陣列元素

要存取一維陣列中的特定元素，你可以使用索引值：

```C=
int first_element = numbers[0]; // 存取第一個元素，索引為0
int second_element = numbers[1]; // 存取第二個元素，索引為1
```

## 修改一維陣列元素的值

要修改一維陣列中的元素值，你可以使用索引來指定要修改的元素：

```C=
numbers[2] = 10; // 將第三個元素的值設為10
```

---

# 二維陣列

## 介紹

### 什麼是二維陣列？

二維陣列是一種資料結構，它可以存儲相同類型的元素，但與一維陣列不同，它們是以行和列的形式組織的。你可以將它想像成一個包含行（column）和列（row）的表格，每個格子中都有一個元素。

## 宣告和初始化

### 元素放在MEM中的方式
* Row-major
* Column-major

![](https://i.imgur.com/0N0II7d.png)

### 如何宣告一個二維陣列？

在C語言中，我們可以這樣宣告一個二維陣列：

```C=
int matrix[3][3]; // 一個3x3的整數二維陣列
```

這將創建一個包含3行3列的二維陣列，就像一個3x3的矩陣。

### 如何初始化二維陣列？

我們可以在宣告的同時初始化二維陣列：
```C=
int matrix[2][2] = {{1, 2}, {3, 4}}; // 一個2x2的整數二維陣列，並初始化其值
```

## 存取元素

### 如何存取二維陣列中的元素？

要存取二維陣列中的特定元素，我們需要提供兩個索引值，分別代表行和列：
```C=
int element = matrix[1][1]; // 存取第二行第二列的元素，值為4
```

## 遍歷二維陣列

### 如何遍歷二維陣列中的所有元素？

我們可以使用兩個巢狀的迴圈來遍歷二維陣列：

```C=
for(int i = 0; i < 2; i++) {
    for(int j = 0; j < 2; j++) {
        printf("%d ", matrix[i][j]);
    }
    printf("\n");
}
```
這個迴圈將會逐行逐列地列印出所有元素。

## 二維陣列的應用

二維陣列常用於表示矩陣、表格、圖像等多維數據結構。例如，在遊戲開發中，我們可以使用二維陣列來表示遊戲地圖。