C中的函数参数

Mic*_*nov 2 c arguments

我对C完全是新手.这是一个问题:

写功能

fzero(double f(double),double x1, double x2)
Run Code Online (Sandbox Code Playgroud)

正如我们在课堂上所做的那样,用它来找到所有的解决方案

sin( pi*x / (1+x^2) ) = 0.25.
Run Code Online (Sandbox Code Playgroud)

现在,我不希望你解决这个问题.我错过了这个讲座,只想了解这意味着什么

double f(double);
Run Code Online (Sandbox Code Playgroud)

Oli*_*rth 9

在那个上下文中,它意味着它f是一个函数指针,它接受一个double参数,并返回一个double.

举个例子:

void foo(double f(double))
{
    double y = f(3.0);  // Call function through function pointer
    printf("Output = %f\n", y);   // Prints "Output = 9.0000"
}

double square(double x)
{
    return x*x;
}

int main(void)
{
    foo(&square);  // Pass the address of square()
}
Run Code Online (Sandbox Code Playgroud)

请注意,函数指针有两种语法:

void foo(double f(double))
void foo(double (*f)(double))
Run Code Online (Sandbox Code Playgroud)

这些是等价的.