如何将一系列函数指针作为一个论点?

发布于 2025-02-07 06:17:21 字数 444 浏览 2 评论 0原文

我有一系列函数指针int(*oper_ptr [4])(int,int)= {add,sub,sub,mul,divi};对于以下功能,该功能只需在两个传递的整数上执行标准操作:

int add(int num_a, int num_b); 
int sub(int num_a, int num_b); 
int mul(int num_a, int num_b); 
int divi(int num_a, int num_b); 

将此数组传递到另一个函数的最佳方法是什么。我尝试了: void polish(char* fileName,int(* oper_ptr [4])(int,int)) with for eg,oper_ptr [0](num_a,num_a,num_b); to to调用第一个功能。

I have an array of function pointers int (*oper_ptr[4])(int, int) = {add, sub, mul, divi}; for the below functions which simply perform a standard operation on two passed integers:

int add(int num_a, int num_b); 
int sub(int num_a, int num_b); 
int mul(int num_a, int num_b); 
int divi(int num_a, int num_b); 

What is the best way to pass this array into another function. I have tried:
void polish(char* filename, int (*oper_ptr[4])(int, int)) with for e.g., oper_ptr[0](num_a, num_b); to call the first function.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幽梦紫曦~ 2025-02-14 06:17:21

您做的方式有效。但是,与函数指针一样,在没有Typedef的情况下使用它们是一个坏主意:

typedef int operation (int num_a, int num_b); 

void polish (char* filename, operation* op[4]);

The way you have done it works. But as always with function pointers, it's a bad idea to use them without typedef:

typedef int operation (int num_a, int num_b); 

void polish (char* filename, operation* op[4]);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文