int a[10], *p;
p = &a[0]; // 指向第 0 元素
p = a; // 等價:數組名退化為首元素地址
數組元素連續存放,指針算術可遍歷所有元素。
| 表示形式 | 含義 | 等價形式 |
|---|---|---|
p+i / a+i | 第 i 元素地址 | &a[i] |
*(p+i) / *(a+i) | 第 i 元素值 | a[i] |
p[i] | 第 i 元素值 | *(p+i) |
p = a + 5; // p 指向 a[5]
p[2] → *(p+2) → a[7]
p[-3] → *(p-3) → a[2]
指針下標可正可負,相對於指針當前位置偏移。這在指針已定位到數組中間位置時極為方便。
a++ 錯誤)malloc:運行期分配,手動管理生命週期,靈活但易出錯指針與數組的互換性是 C 語言高效操作內存的核心機制之一。