指針 = 內存地址 (常量);指針變量 = 存放地址的變量。
int a = 12;
int *p = &a; // p 存 a 的地址
*p = 20; // 解引用修改 a → a=20
int a = 12;
int *p = &a;
int **pp = &p; // pp 存 p 的地址
**pp = 30; // 經兩次解引用修改 a → a=30
| 聲明 | 名稱 | 含義 | 步長 |
|---|---|---|---|
int *p[3] | 指針陣列 | 3 個 int*,每個指向一個 int | sizeof(int*) |
int (*p)[3] | 陣列指針 | 1 個指針,指向含 3 個 int 的陣列 | 3*sizeof(int) |
char *argv[])、二維不規則陣列行指針。void f(int (*a)[COLS]))、遍歷二維陣列行。int a=12;
int *p=&a; p ──→ [a:12]
int **pp=&p; pp ──→ [p:&a] ──→ [a:12]