我是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);
感谢您的帮助!
答案 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
// ...
}