如何将函数(B)作为参数给出函数(A)?
这样我就可以在函数B中使用函数A.
与以下示例中的变量B类似:
foo(int B) { ... }
答案 0 :(得分: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()
函数内调用。
答案 1 :(得分:2)
假设您有一个想要呼叫的功能:
void foo() { ... }
你想从bar
:
void bar(void (*fun)())
{
/* Call the function */
fun();
}
然后可以像这样调用bar
:
bar(foo);
答案 2 :(得分: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;
}