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(*)())的函数指针数组

原文地址:https://www.cnblogs.com/UnGeek/p/3018716.html