如何使两个函数的和在右边为函数对象?

问题描述 投票:0回答:1

我有一些数值积分的代码,它工作得很好,但我有一个小问题。这是我的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 function pointers
1个回答
0
投票

在C语言中没有:)。

那个 + 是一个相当高级的结构,通常被称为 "操作符"。要做到你所要求的,你需要一种重新定义内置语法的方法。当编译器看到 +它将根据两边的参数,查找该符号的含义。在C++中,你可以写一个 operator+ 方法,在Python中,一个 __add__ 方法,在Rust中你会 impl Add以此类推,其他语言也是如此。

但不幸的是,在C语言中没有这样的小节。幸好,取决于你的立场,因为上面的内容很快就会变得非常复杂。C不管好坏,都是小、简单、危险、快速。

© www.soinside.com 2019 - 2024. All rights reserved.