【发布时间】:2019-11-30 06:51:36
【问题描述】:
我见过这个函数的定义,它接收一个函数指针作为参数:
double fin_diff(double f(double), double x, double h = 0.01) {
return (f(x+h)-f(x)) / h;
}
我习惯用星号看到这个定义,即:
double fin_diff(double (*f)(double), double x, double h = 0.01);
你知道为什么第一个定义也有效吗?
【问题讨论】:
-
函数和函数指针在用作函数的参数时具有相同的含义。
-
虽然您需要了解函数指针等,但在 C++ 中,如果可以避免的话,您真的不应该自己使用它们。如果您打算直接调用该函数,如示例所示,请改用模板。否则使用
std::function。使用模板或std::function通过允许您传递具有正确签名的任何类型的可调用对象(如 lambda、仿函数对象、实际函数指针等)来增加灵活性。 -
语言
c和c++是两种不同的语言。请选择一个并删除另一个tag,因为答案因语言而异
标签: c++ c function-pointers function-declaration