指標與陣列
在 C 語言中,陣列名稱通常會轉換成指向陣列第一個元素的指標。因此可以透過 Pointer(指標)來存取或修改 Array(陣列)中的資料。
### 基本概念
假設有陣列:
```c
int numbers[3] = {10, 20, 30};
```
- `numbers`:代表第一個元素的位址
- `&numbers[0]`:第一個元素的位址
- `*numbers`:取得第一個元素的值,也就是 `10`
- `*(numbers + 1)`:取得第二個元素的值,也就是 `20`
陣列索引與指標表示法等價:
```c
numbers[i] == *(numbers + i)
```
### 簡單範例
```c
#include <stdio.h>
int main(void)
{
int numbers[5] = {10, 20, 30, 40, 50};
int *ptr = numbers; // ptr 指向陣列第一個元素
for (int i = 0; i < 5; i++)
{
printf("第 %d 個元素:%d\n", i + 1, *(ptr + i));
}
// 透過指標修改陣列內容
*(ptr + 2) = 100;
printf("修改後第三個元素:%d\n", numbers[2]);
return 0;
}
```
### 執行結果
```text
第 1 個元素:10
第 2 個元素:20
第 3 個元素:30
第 4 個元素:40
第 5 個元素:50
修改後第三個元素:100
```
其中:
```c
*(ptr + i)
```
表示從指標 `ptr` 開始,向後移動 `i` 個元素,再取得該位置的資料。由於 `ptr` 是 `int *`,每次移動會自動跳過一個 `int` 的大小。
相關學習地圖、教學課程
C 語言,系統程式