C指针阅读技巧分析

12次阅读

共计 639 个字符,预计需要花费 2 分钟才能阅读完成。

指针浏览技巧解析

左右法令
从最里层的圆括号中未定义的标识符看起
首先往右看,再往左看
遇到圆括号或方括号能够确定局部类型,并调转方向
反复 2,3 步骤,直到浏览完结

1.int(*p)(int) ==>p 为最里层圆括号未定义标识符 ==>p 为指针,指向函数,指向的函数有一个 int 参数,返回值为 int
2.int(p1)(int ,int(f)(int)); ==>p1 为指针,指向函数,指向的函数有 int,f 为第二个参数,它是函数指针,指向的函数参数是 int,返回值为 int;返回值为 int
3.int(p2[5])(int); ==>p2 为数组,有 5 个元素,这 5 个元素为指针,指向函数,函数类型为 int(int*)
4.int((p3)[5])(int); ==>p3 为指针,数组指针,指向的数组有 5 个元素,这 5 个元素为指针,是函数指针,指向的函数类型 int(int)
5.int((p4)(int))(int) ==>p4 为指针,函数指针,参数为 int,返回值为指针,是函数指针,指向的函数类型 int(int)
6.int((p5)(int))[5]; ==>p5 为指针,函数指针,参数为 int,返回值为指针,指向数组,指向的数组类型为 int[5]

typedef int(ArrayType)[5];
typedef ArrayType(Functype)(int);
Functype* p5;

小结:

左右法令总结于编译器对指针变量的解析过程
指针浏览练习的意义在于了解指针的组合定义
可通过 typedef 简化简单指针的定义
正文完
 0