什么可能是表达" double(f)(double)"用C表示

时间:2014-07-30 11:54:15

标签: c

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

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;
}

1 个答案:

答案 0 :(得分:9)

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));