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

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

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

测试代码

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

