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简化复杂指针的定义