2

正如标题所说,如何在 C 中使用函数的指针?我可以只取函数名的地址并将其传递给另一个函数吗?然后取消引用它并调用它?

非常感谢。

4

2 回答 2

8

如果你知道函数地址,那么是的。例如:

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
于 2012-12-19T04:42:12.553 回答
1

为了准确地回答您的问题,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.....

于 2012-12-19T05:10:52.693 回答