指針是C語言的靈魂,其核心優勢在於:
僅適用於指向數組/字符串的指針。p+n 表示向後移動 n 個元素位置(非字節偏移),步長由元素類型決定。指向其他類型的指針進行加減無意義。
p==0 表示空指針同一數組的兩指針相減,結果為元素個數差值(地址差除以元素大小)。指針相加無意義。
| 聲明 | 含義 |
|---|---|
int *p; | p 為指向整型的指針 |
int *p[n]; | p 為指針數組,含 n 個指向整型的指針元素 |
int (*p)[n]; | p 為指向二維數組的指針,列數為 n |
int *p(); | p 為返回指向整型指針的函數 |
int (*p)(); | p 為指向函數的指針,該函數返回整型 |
int **p; | p 為指向指針的指針,最終指向整型 |
以 int*(*(*a)())[10] 為例:
aint 型數據結論:a 是函數指針,該函數返回指向指針數組的指針,數組元素指向整型。
int a[5](); 非法)[] 和 () 優先於左側的 *,同級從左結合