欢迎光临散文网 会员登陆 & 注册

看个宝贝:int (*(*pf())())(),C语言解析高难度函数指针

2019-04-02 22:06 作者:C语言基础  | 我要投稿

看个宝贝

新手上路,多多关注,这真的对我很重要


解读过程

首先,要确定声明中出现的操作符的优先级。其次,要确定在声明中标识符与某个操作符结合起来的时候有什么意义。由于函数声明的特殊性,当指针解引用操作符*与一个表示函数的标识符结合时,表示这个函数的返回值是一个指针。例如 *a() 表示a是一个返回值为指针的函数。有了以上的基础,接下来我们就可以从声明中的标识符开始,按照操作符的优先级,由内向外逐步来解读:


新手上路,多多关注,这真的对我很重要

最终的解读结果冗长拗口。可以看出,这实际上是返回值为函数指针的函数的递归。下面是可读性更强的等效代码:

新手上路,多多关注,这真的对我很重要

测试代码


新手上路,多多关注,这真的对我很重要

照操作符的优先级,由内向外逐步来解读,其实并没有想象中的那么复杂哦。


看个宝贝:int (*(*pf())())(),C语言解析高难度函数指针的评论 (共 条)

分享到微博请遵守国家法律