就像我已经在标题中写的那样,我遇到的问题是我需要了解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;
}
答案 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));