Array 陣列
# C 語言的 Array(陣列)概念
陣列是一種可以儲存「多個相同型別資料」的資料結構。陣列中的每個元素依序排列,並透過索引(index)存取。
## 1. 宣告陣列
```c
資料型別 陣列名稱[元素數量];
```
例如:
```c
int scores[5];
```
代表宣告一個可以存放 5 個 `int` 的陣列。
陣列索引從 **0 開始**:
```c
scores[0] = 80; // 第 1 個元素
scores[1] = 90; // 第 2 個元素
scores[4] = 75; // 第 5 個元素
```
不能存取超出範圍的索引,例如 `scores[5]` 是錯誤的,因為有效索引為 `0 ~ 4`。
---
## 2. 宣告時初始化
```c
int numbers[5] = {10, 20, 30, 40, 50};
```
也可以省略陣列大小:
```c
int numbers[] = {10, 20, 30, 40, 50};
```
編譯器會根據初始值自動決定陣列大小。
若只提供部分初始值,其餘元素會自動設為 `0`:
```c
int values[5] = {1, 2};
// 結果為:{1, 2, 0, 0, 0}
```
---
## 3. 使用迴圈處理陣列
陣列通常會搭配 `for` 迴圈使用:
```c
for (int i = 0; i < 5; i++) {
printf("%d\n", numbers[i]);
}
```
注意:陣列長度必須由程式設計師自行管理,C 語言不會自動檢查索引是否超出範圍。
---
# 範例一:計算陣列元素總和與平均值
```c
#include <stdio.h>
int main(void) {
int numbers[] = {10, 20, 30, 40, 50};
int size = sizeof(numbers) / sizeof(numbers[0]);
int sum = 0;
for (int i = 0; i < size; i++) {
printf("numbers[%d] = %d\n", i, numbers[i]);
sum += numbers[i];
}
printf("總和 = %d\n", sum);
printf("平均值 = %.2f\n", (double)sum / size);
return 0;
}
```
### 重點
```c
sizeof(numbers) / sizeof(numbers[0])
```
可以計算陣列的元素數量:
- `sizeof(numbers)`:整個陣列佔用的位元組數
- `sizeof(numbers[0])`:一個元素佔用的位元組數
---
# 範例二:二維陣列表示矩陣
二維陣列可以想成表格,具有「列」和「欄」。
```c
#include <stdio.h>
int main(void) {
int matrix[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
for (int row = 0; row < 2; row++) {
for (int col = 0; col < 3; col++) {
printf("%d ", matrix[row][col]);
}
printf("\n");
}
return 0;
}
```
輸出:
```text
1 2 3
4 5 6
```
存取二維陣列時:
```c
matrix[列索引][欄索引]
```
例如:
```c
matrix[0][1] = 2;
matrix[1][2] = 6;
```
---
## 4. 字元陣列與字串
在 C 語言中,字串通常使用 `char` 陣列表示,最後必須包含結尾字元 `'\0'`:
```c
char name[] = "Alice";
```
實際上會儲存:
```text
'A' 'l' 'i' 'c' 'e' '\0'
```
因此,陣列大小會是 6,而不是 5。
---
## 重點整理
1. 陣列只能儲存相同型別的資料。
2. 索引從 `0` 開始。
3. 宣告格式為:
```c
型別 名稱[大小];
```
4. 不可存取超出陣列範圍的索引。
5. 陣列常搭配 `for` 迴圈使用。
6. C 語言的陣列大小通常在宣告時決定。
7. 二維陣列可用來表示矩陣或表格。
相關學習地圖、教學課程
C 語言,系統程式