1. 指针阅读技巧:右左法则

(1)从最里层的圆括号中未定义的标示符看起

(2)首先往右看,再往左看

(3)遇到圆括号或方括号时可以确定部分类型,并调转方向

(4)重复 2、3 步骤,直到阅读结束

注意:

当读出是数组时,须读出元素个数、元素类型

当读出是函数是,须读出参数及类型,返回值类型

当读出是指针是,须读出指针所指向的类型,有时也须读出指针的类型。

① int (*p)(int*, int (*f)(int*));

A、读未标示符 f,向右遇”)”括号,调转向左遇*,所以 f 是个指针,返回第 2 步,向右读右边的(int *),遇到“(”表示一个函数,说明 f 是个函数指针,指向一个函数,该函数参数为int*,返回值为 int 型。

即 f 是个函数指针,至此,f 指针读完

B、读 p 未标示符,向右遇”)”括号,调转向左遇*,所以 p 是个指针,返回第 2 步,向右读遇 p 指针右边的“(”括号,说明是个函数,该函数有 2 个参数,一个为 int*,一个为 f 函数指针,返回值为 int 型,

即 p 是个函数指针,指向两个参数,分别为 int*和函数指针型,返回值为 int 型的函数指针。

②int (*p[5])(int*)

A、读指针 p,向右,说明 p 是数组,该数组有 5 个元素,每个元素的类型为指针类型,它们指向一个函数,该函数参数为 int*,返回值为 int 型。

B、综上:p 为一个数组,有 5 个元素,每个元素是一个函数指针,它们指向一个参数为int*,返回值为 int 的函数。

③int (*(*p)[5])(int*);

A、读指针 p,向右遇)括号,向左*,说明 p 是指针,部分确定类型回第 2 步,向右,说明 p 指针指向一个数组,该数组有 5 个元素,每个元素为指针,这个是个函数指针,

指向参数为 int*,返回值为 int 型的函数。

B、综上:p 为一个数组的指针,该数组有 5 个元素,每个元素为都是一个函数指针,函数参数为 int*,返回值为 int 型。

④int (*(*p)(int*))[5];

A、首先 p 是个指针,指向函数,该函数参数为 int*,返回值为指针。这个返回值指向一个数组,该数组有 5 个元素,每个元素为 int 型。

B、综上:p 是个函数指针。该函数:参数:int*,返回值是个数组指针,指向 5 个 int 型元素的数组。

⑤void (*func(void (*p)(void *)))(void *)

A、func 首先是个函数 :参数为 p,p 是个函数指针,指向是参数为 void*,返回值为 void 的函数。返回值是一个指针,指向一个参数为 void*,返回值为 void 的函数。即返回值是一个函数指针。

B、综上,func 是个函数,参数是函数指针 p,返回值也是函数指针。

参考资料:
www.dt4sw.com
http://www.cnblogs.com/5iedu/category/804081.html

最新文章

  1. cAdvisor0.24.1+InfluxDB0.13+Grafana4.0.2搭建Docker1.12.3 Swarm集群性能监控平台
  2. OpenSource.organization-in-github
  3. 1064. Complete Binary Search Tree
  4. 【HTML】Advanced2:Conditional Comments
  5. JAVA调用操作javascript (JS)工具类
  6. C#.NET快速开发框架-企业版V4.0截图打包下载
  7. 认识Backbone (五)
  8. js实现td排序及分组分类
  9. Error Correct System CodeForces - 527B
  10. python内置函数 divmod()
  11. 【原创】Proxmark3系列教程1——PM3用法
  12. 9-Unittest+HTMLTestRunner不能生成报告解决方法
  13. js data日期初始化的5种方法 [转]
  14. hdu1285 确定比赛名次【拓扑排序】
  15. SSM 后台封装的有值, 到前台打印的时候没有值
  16. myeclipse10 破解版安装
  17. SWIFT中正则表达式验证邮箱
  18. DataTable根据字段去重
  19. forname,newInstance的作用及使用
  20. Go 中包导入声明

热门文章

  1. java中集合类详解
  2. UML用例建模解析(二)---------用例执行者之间关系
  3. The RK3066/RK30SDK Android 4.2 audio codec has a bug!
  4. Beautifusoup
  5. Eclipse中Maven的本地仓库引导配置
  6. git常用命令收藏
  7. luogu P4848 崂山白花蛇草水
  8. Unity Shader实现描边效果
  9. 终于解决了一个Win7 下 VS 编译的问题,困扰了我好几个月
  10. BZOJ2038:[2009国家集训队]小Z的袜子