正如标题所说,如何在 C 中使用函数的指针?我可以只取函数名的地址并将其传递给另一个函数吗?然后取消引用它并调用它?
非常感谢。
如果你知道函数地址,那么是的。例如:
int add(int a, int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
int operation(int (*op)(int, int), int a, int b)
{
return op(a, b);
}
然后像这样调用它:
printf("%d\n", operation(&add, 5, 3)); // 8
printf("%d\n", operation(&sub, 5, 3)); // 2
你甚至可以做一些数组技巧:
int op = 0;
int (*my_pointer[2])(int, int) =
{
add, // op = 0 for add
sub // op = 1 for sub
};
printf("%d\n", my_pointer[op](8, 2)); // 10
为了准确地回答您的问题,C 中有一个用于满足此类需求的规定,称为“函数指针”。
但你必须遵守一定的规则,
1)您要使用函数指针调用的所有函数必须具有相同的返回类型。2)您要使用函数指针调用的所有函数必须具有相同的参数和参数类型。
例如,
整数添加(整数,整数);整数子(整数,整数);
for above two functions you can write function pointer as,
int (*operation)(int , int);
and you can use it just as described by Flavio Torbio.
hope it helps.....