集成函数指针

时间:2014-01-06 14:54:46

标签: c function pointers function-pointers

我是C的新手,我在理解下面这部分功能时遇到了一些问题。

很快,它整合了数字R - >使用矩形方法的R函数:

double numint(double (*f)(double), double x1, double x2, double dx)
{
    double x, sum = 0;
    for (x = x1; x < x2; x += dx)
        sum += f(x) * dx;
    return sum;
}

我的问题是:

1。)double (*f)(double)代表什么?如何调用此部分功能?它是一个未在示例中定义的类型,还是它本身可用?

例如,exampledouble = numint( ?? , double1, double2, double3);

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

f是一个函数指针,需要double作为参数并返回double。所以你必须使用这个原型传递一个函数地址

double myfunc(double);

这一行在这里被称为:

sum += f(x) * dx;

示例:

 double myfunc(double v)
 {
    return v*v;
 }

 int main(int argc, char *argv[])
 {
     double x1 = 1.0;
     double x1 = 2.0;
     double x3 = 5.0;

     double val = numint(myfunc, x1, x2, x3)
     return 0;
 }

答案 1 :(得分:3)

要添加Devolus的答案,请按以下方式致电numint

double parabola(double x) {
  return x * x + 3 * x + 1;
}

int main() {
  int ans = numint(parabola, 0, 3, 0.1);
  // gets integral from 0 to 3 of x^2 + 3x + 1

  // ...
}