C语言笔试怪异题目收集
请描述以下代码中的p
char(*(*p())[])(int, void (*)())
#include <iostream> using namespace std; int main() { char ( * (*p())[] )(int, void (*)()); p(); return 0; } char f1(int, void (*)()) { return 'a'; } char f2(int, void (*)()) { return 'b'; } typedef char (*funtype[])(int, void (*)()); char ( * (*p())[2] )(int, void (*)()){ // static funtype farr_p; funtype parr={f1,f2}; // funtype* pf=&parr; cout<<"hello!"<<endl; return &parr; }
由外向里看 :
1.char ( * )(int, void(*)()) 是一个函数指针
2.加上[] 后是 函数指针数组
3.再加上(*p())就是一个函数,所以p()是一个函数,返回值是类型为char ( * )(int, void(*)())的函数指针数组