C 函数和指针

C 函数和指针,c,C,我必须展示程序的输出并解释它的功能。 函数的参数在哪里 int main(void) { printf("Answer: %d\n", f1(f2)); return 0; } int f1(int (*f)(int)) { int n = 0; while ((*f)(n)) n++; return n; } int f2(int i) { return i * i + i - 12; } 首先,您错过了函数的声明。如果我们认为

我必须展示程序的输出并解释它的功能。 函数的参数在哪里

int main(void)
{
    printf("Answer: %d\n", f1(f2));
    return 0;
}
int f1(int (*f)(int))
{
    int n = 0;
    while ((*f)(n))
        n++;
    return n;
}
int f2(int i)
{
    return i * i + i - 12;
}

首先,您错过了函数的声明。如果我们认为它们在它应该在的地方,那么您将传递一个函数指针到函数
f1
,然后在
循环的条件下执行它,如果结果是非零(f2
的结果)然后该条件变为真,执行
n++
,或者
n
增加
1

它以(
f2
返回的值)
-12
开始,然后
-10
然后
-6
然后
0
开始。因此,函数将返回
3
。所以输出是

Answer: 3

注:
int(*f)(int)
表示
f
是指向函数的指针,该函数返回
int
,并将
int
作为参数