繁体   English   中英

如何在C中使用函数的指针? (没有C ++)

[英]How to use the pointer of a function in C? (No C++)

正如标题所说,我如何在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)要使用函数指针调用的所有函数必须具有相同的参数和参数类型。

例如,

int add(int,int); int sub(int,int);

对于以上两个函数,您可以将函数指针写为,

int(* operation)(int,int);

你可以像Flavio Torbio所描述的那样使用它。

希望能帮助到你.....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM