我有一些数值积分的代码,它工作得很好,但我有一个小问题。这是我的main.c代码。
#include <math.h>
#include <stdio.h>
#include "integral.h"
double func(double x) {
return sin(x) + cos(x);
}
int main(void) {
double a = 0;
double b = 1;
int steps = 5;
double (*f)(double x);
f = func;
double i = integrate(f, a, b, steps);
printf("%lf", i);
}
这是我的积分函数的样子。double integrate(double(*f)(double x), double a, double b, int steps);
所以,我的问题是: 有没有办法让代码看起来像这样[没有func()]。
double a = 0;
double b = 1;
int steps = 5;
double (*f)(double x);
f = sin + cos;
double i = integrate(f, a, b, steps);
在C语言中没有:)。
那个 +
是一个相当高级的结构,通常被称为 "操作符"。要做到你所要求的,你需要一种重新定义内置语法的方法。当编译器看到 +
它将根据两边的参数,查找该符号的含义。在C++中,你可以写一个 operator+
方法,在Python中,一个 __add__
方法,在Rust中你会 impl Add
以此类推,其他语言也是如此。
但不幸的是,在C语言中没有这样的小节。幸好,取决于你的立场,因为上面的内容很快就会变得非常复杂。C不管好坏,都是小、简单、危险、快速。