从书 21st Century C :
从概念上讲,函数类型的语法实际上是指向给定类型函数的指针。如果你有一个带有标题的函数,如:
double a_fn(int, in); //a declaration
然后只需添加一个星(以及用于解析优先级的parens)来描述指向此类函数的指针:
double (*a_fn_type)(int, int); //a type: pointer-to-function
然后将typedef放在其前面以定义类型:
typedef double (*a_fn_type)(int, int); //a typedef for a pointer to function
现在您可以将它用作任何其他类型的类型,例如声明一个将另一个函数作为输入的函数:
double apply_a_fn(a_fn_type f, int first_in, int second_in){ return f(first_in, second_in); //shouldn't this be *f(first_in, second_in) ? }
问题:最后一个函数的返回值不应该是*f(first_in, second_in)
,因为f
是指向函数的指针,而*f
表示实际功能?