我是否正确理解C语法?

时间:2018-06-22 22:04:16

标签: c

我有这样的语法:

double (*(f(double (*)(int))))(int);

我是否正确理解上面的语法,即f是获取指向接收int并返回double的函数的指针的函数?

1 个答案:

答案 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);