返回对C中函数的指针的调用

时间:2016-10-16 20:09:36

标签: c pointers

从书 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表示实际功能?

1 个答案:

答案 0 :(得分:1)

用于调用函数指针的解除引用运算符是optional in C