c - C 中的表达式 "double (f)(double)"可能是什么意思

标签 c

就像我已经在标题中写的那样,我遇到了一个问题,我需要了解 double (f)(double) 在 C 中的含义。整个 methode header 如下所示:

Bmp* drawGraph(double (f)(double),double minX,double maxX)

这是一个大学项目,我的教授喜欢缺席或无法通过电子邮件或其他通信方式联系到他。

我认为这个方法的名称和提议几乎是不言自明的。

在给这个方法的信息信中说“f”应该是一个函数,但我不知道在那种情况下我应该给这个方法什么样的参数。

Bmp* drawGraph(double (f)(double),double minX,double maxX)
{
    double height = f(maxX);

    Bmp* bmp = newBmp(maxX, f(maxX) * 2);

    background(bmp, BLACK);

    //Hier zeichne ich das Koordinatensystem
    //in seiner minimalistischten Form

    drawLine(bmp, GREEN, 0, f(maxX), maxX, f(maxX));
    drawLine(bmp, GREEN, 0, 0, 0, f(maxX) * 2);

    for(double d = minX; d < maxX; d += 0.1)
    {
            drawLine(bmp, RED, d, f(d) + height, d + 0.1, f(d + 0.1) + height);
    }

    return bmp;
}

最佳答案

double (f)(double)

f 是函数类型的参数:具有 double 参数并返回 double 值的函数。

例如:

double foo(double a)
{
    return a + 42.0;
}

参数被调整(因此声明等价)为指向函数的指针,该函数具有 double 参数并返回 double 值。

double (*f)(double)

所以这些声明都是等价的:

void bla(double (f)(double));
void bla(double f(double));
void bla(double (*f)(double));

关于c - C 中的表达式 "double (f)(double)"可能是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25036175/

相关文章:

c - 如何转换日期格式: 2019-08-22 16:16:08] to the format: aammjjhhmmss in C language

c - 使用套接字发送文件

C语言,序列每个数加1。如何去掉开头的0

Char 数组到 Int 转换

c - 如何修改s_client的代码?

使用C从存储在数组中的数字创建一个数字

c - 是否可以 typedef 预处理器指令?

c - 为什么调用堆栈是这样设置的?

c++ - 如何编写目标为 "errors"的 makefile ?

c - 函数溢出错误