2

怎么可能给一个函数(B)一个函数(A)作为参数?

这样我就可以在函数 B 中使用函数 A。

就像以下示例中的变量 B 一样:

foo(int B) { ... }
4

3 回答 3

4

通过使用函数指针。例如,查看qsort()标准库函数。

例子:

#include <stdlib.h>

int op_add(int a, int b)
{
  return a + b;
}

int operate(int a, int b, int (*op)(int, int))
{
  return op(a, b);
}

int main(void)
{
  printf("12 + 4 is %d\n", operate(12, 4, op_add));

  return EXIT_SUCCESS;
}

将打印12 + 4 is 16

该操作作为指向函数的指针给出,该函数从函数内部operate()调用。

于 2012-09-13T10:54:50.550 回答
2

假设您有一个要调用的函数:

void foo() { ... }

您想从以下位置调用它bar

void bar(void (*fun)())
{
    /* Call the function */
    fun();
}

然后bar可以这样调用:

bar(foo);
于 2012-09-13T10:56:01.730 回答
2

在另一个函数的参数列表中写函数指针类型看起来有点奇怪,尤其是指针比较复杂的时候,所以推荐使用typedef。

例子

#include <stdio.h>

typedef int func(int a, int b);

int add(int a, int b) { return a + b; }

int operate(int a, int b, func op)
{
    return op(a, b);
}

int main()
{
    printf("%d\n", operate(3, 4, add));
    return 0;
}
于 2012-09-13T10:58:52.847 回答