---
# System prepended metadata

title: C++_two-dimensional_array

---

# 二維陣列

## 1. 什麼是二維陣列？
- **定義：** 二維陣列是由多個一維陣列所組成的陣列，可以用來儲存表格或矩陣型的資料。
- **結構：** 二維陣列有「行」和「列」，每個元素都可以透過兩個索引來存取。

因為我很常忘記哪個是"行"哪個是"列"，所以有了一個特別的記法，就是"一列火車是橫的"，這樣應該會比較好記一點(吧)，反正學了二階行列式**應該**就會更了解了。

## 2. 如何宣告二維陣列？
在 C++ 中，宣告二維陣列的語法如下：
```cpp
type arrayName[row_size][col_size];
```
- `type` 是陣列元素的資料型態（如 `int`, `float` 等）。
- `row_size` 是陣列的行數(深的)。
- `col_size` 是陣列的列數(橫的)。

## 3. eg
假設我們要宣告一個 3x3 的整數陣列：
```cpp=
//這是初始化的，用{}把值包起來。當然，也可以看成三個一維陣列
int arr[3][3] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};
```
這樣的二維陣列會看起來像這樣：
```
1 2 3
4 5 6
7 8 9
```

## 4. 如何存取二維陣列的元素？
- 可以使用兩個索引來存取二維陣列的元素，格式為：`arr[row_index][col_index]`。
- **eg：**
  ```cpp
    int arr[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    
    cout << arr[0][1];  // 輸出 2 
    cout << arr[2][0];  // 輸出 7 
  ```

## 5. 二維陣列的常見應用
- **矩陣運算：** 二維陣列常被用於**儲存和操作**數學中的矩陣。
- **表格數據：** 可以用來儲存和操作表格型的數據，如**學生成績**(應該看過吧?對吧對吧)、遊戲**棋盤**等。
- **影像處理：** 圖像可以視為由像素組成的矩陣，二維陣列適合用來處理**圖**等等的數據。

## 6. 二維陣列的遍歷
可以使用巢狀迴圈來遍歷二維陣列：
```cpp
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        cout << arr[i][j] << " ";
    }
    cout << endl;
}
//cout換成cin就是輸入資料囉!!!!
```
這會輸出：
```
1 2 3
4 5 6
7 8 9
```
當然妳也可以
```cpp
for(int i = 0; i < 3; i++){
    cout << arr[i][0] << " " << arr[i][1] << " " << arr[i][2] << endl;
}
```

## 7. 注意事項
- **固定大小：** 在 `C++` 中，二維陣列的大小必須在編譯時就確定，**不能動態改變**。
- **初始化：** 可以在宣告時初始化二維陣列，也可以在後面進行逐一賦值。
