怎么可能给一个函数(B)一个函数(A)作为参数?
这样我就可以在函数 B 中使用函数 A。
就像以下示例中的变量 B 一样:
foo(int B) { ... }
怎么可能给一个函数(B)一个函数(A)作为参数?
这样我就可以在函数 B 中使用函数 A。
就像以下示例中的变量 B 一样:
foo(int B) { ... }
通过使用函数指针。例如,查看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()
调用。
假设您有一个要调用的函数:
void foo() { ... }
您想从以下位置调用它bar
:
void bar(void (*fun)())
{
/* Call the function */
fun();
}
然后bar
可以这样调用:
bar(foo);
在另一个函数的参数列表中写函数指针类型看起来有点奇怪,尤其是指针比较复杂的时候,所以推荐使用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;
}