优秀的编程知识分享平台

网站首页 > 技术文章 正文

C语言如何高难度函数指针?看个宝贝:int (*(*pf())())()

nanyue 2024-07-22 14:09:11 技术文章 11 ℃

看个宝贝

从没有见过这样的函数声明吧!那么它究竟是一个怎样的函数呢?

解读过程

  •  首先,要确定声明中出现的操作符的优先级。
  • 其次,要确定在声明中标识符与某个操作符结合起来的时候有什么意义。

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

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

测试代码

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

最近发表
标签列表