Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回对C中函数指针的调用_C_Pointers - Fatal编程技术网

返回对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

摘自《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, 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),但是是的。你为什么不试试呢?