| 級別 | 符號 | 含義 | 結合性 |
|---|---|---|---|
| 1 | () | 函數參數列表 / 分組 | 左→右 |
| 2 | [] | 數組下標 | 左→右 |
| 3 | * | 指針修飾(前綴) | 右→左 |
| 4 | 類型關鍵字 | int, char, struct 等 | — |
const int = 常量整數*:int *const = 常量指針int *a[2]a 開始[] 優先:a 是數組,大小 2* 修飾數組元素:元素類型為 int*char *(*c[10])(int **p)c 開始[]:c 是數組 [0..9]*(括號內):數組元素是指針():指向函數的指針,參數 int***(最外層):函數返回 char*int (*p)[3] vs int *p[3]int (*p)[3]:() 提升優先級 → p 是指針 → 指向 int[3] 類型 → 二維數組指針(行指針)int *p[3]:[] 優先 → p 是數組 → 元素為 int* → 指針數組"先括號,後後綴,再前綴,最後類型" 括號改變優先級,[] 和 () 同級左結合,* 右結合
typedef int (*FuncPtr)(int, double); // 函數指針類型 typedef int (*ArrayPtr)[3]; // 行指針類型 FuncPtr fp; // 清楚明瞭 ArrayPtr ap;
void (*signal(int, void(*)(int)))(int) — 信號處理函數原型char (*(*x())[])() — 函數返回指向函數指針數組的指針int *const *(*const *p)[5] — 多層指針與 const 混合建議配合 cdecl 工具或在線解析器驗證複雜聲明。