我有这样的语法:
double (*(f(double (*)(int))))(int);
我是否正确理解上面的语法,即f是获取指向接收int并返回double的函数的指针的函数?
答案 0 :(得分:4)
否;实际上实际上比这还要复杂。
cdecl.org将此类型定义的含义屏蔽为:
将f声明为函数(指向函数(int)的指针返回double),返回指向函数(int)的指针,返回double
换句话说,f
指向的函数将函数指针作为参数,然后返回函数指针。这两个函数指针都必须指向以int
作为参数并返回double
的函数。
您可以使用中间的typedef
来简化此定义,如下所示:
typedef double (*int_to_double_function)(int);
int_to_double_function (*f)(int_to_double_function);