我遇到了一个奇怪的函数指针,
void * (*f1(void(*f2)(void)))(int ) ;
f1
代表什么?
答案 0 :(得分:4)
T (*f(U))(V)
将f
声明为一个函数,它接受U
并返回指向V
到T
的函数的指针(即T (*)(V)
)。< / p>
所以f1
是一个接受void (*)(void)
并返回void* (*)(int)
的函数。
命名类型使其更具可读性:
typedef void (*parameter)();
typedef void* (*result)(int);
result f1(parameter f2);
(名称&#34; f2&#34;除了帮助人类阅读代码解释它之外没有任何意义。)