今天在博客园上看到一篇如何解决C/C++返函数指针的函数声明的文章,我也来说说我的方法。
int (*(*pf())())() {
return nullptr;
}
从左到右找到最里面的括号,然后一步一步替换。
1 首先找到的是pf(),这是一个函数,则替换为p1,结果如下:
int (*(*p1)())();
2 再从左向右找,找到一个函数指针,替换为p2,结果如下:
p2 (*p1)();
int (*p2)();
3 剩下的就是一个函数指针了
int (*p2)();
现用typedef 定义一下,结果如下:
typedef int (*p2)();
typedef p2 (*p1)();
p1 pf();
注意:第一次找到的肯定是最内部的一个函数;从第二次找就是找指向一个函数的指针。