1.指針閱讀技巧解析
- 右左法則 (實在看不懂看這個)
- 從最裏層的圓括號中未定義的標示符看起
- 首先往右看,再往左看
- 遇到圓括號或方括號時可以確定部分類型,並調轉方向
- 重複2, 3步驟,直到閱讀結束
- 示例:
#include <stdio.h>
int main()
{
int (*p)(int)
int (*p1)(int*, int (*f)(int*));
int (*p2[5])(int*);
int (*(*p3)[5])(int*);
int*(*(*p4)(int*))(int*);
int (*(*p5)(int*))[5];
return 0;
}
- 解析如下:
- 最後一個指針p5用typedef定義如下:
typedef int(ArrayType)[5];
typedef ArrayType* (FunType)(int*);
FunType* p5;
- 工程中複雜指針儘量用typedef定義。
2.小結
- 右左法則總結於編譯器對指針變量的解析過程
- 指針閱讀練習的意義在於理解指針的組合定義
- 可通過typedef簡化複雜指針的定義