看个宝贝
从没有见过这样的函数声明吧!那么它究竟是一个怎样的函数呢?
解读过程
- 首先,要确定声明中出现的操作符的优先级。
- 其次,要确定在声明中标识符与某个操作符结合起来的时候有什么意义。
由于函数声明的特殊性,当指针解引用操作符*与一个表示函数的标识符结合时,表示这个函数的返回值是一个指针。例如 *a() 表示a是一个返回值为指针的函数。有了以上的基础,接下来我们就可以从声明中的标识符开始,按照操作符的优先级,由内向外逐步来解读:
最终的解读结果冗长拗口。可以看出,这实际上是返回值为函数指针的函数的递归声明。下面是可读性更强的等效代码:
测试代码
照操作符的优先级,由内向外逐步来解读,其实并没有想象中的那么复杂哦。