返回对C中函数指针的调用
摘自《21世纪C: 从概念上讲,函数类型的语法实际上是指向给定类型函数的指针。如果您有一个具有如下标题的函数:返回对C中函数指针的调用,c,pointers,C,Pointers,摘自《21世纪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
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\u in,second\u in)
,因为f
是指向函数的指针,*f
表示实际函数吗?调用函数指针的解引用运算符是。所以,要清楚,在这个问题的上下文中,return f(first\u in,second\u in)
或return*f(first\u in,second\u in)
是正确的吗?我相信它是(*f)(first\u in,second\u in),但是是的。你为什么不试试呢?