gpt4 book ai didi

c - 数组和函数指针

转载 作者:行者123 更新时间:2023-11-30 20:22:21 24 4
gpt4 key购买 nike

如何将函数的指针数组作为函数的参数传递?如果函数的类型是void,指针也是void,那么如何访问函数呢?

int main() {

void(*fun_ptr[])(void) = {fun1, fun2, fun3};
pickFun(fun_ptr);
return 0;
}

所有 3 个函数仅打印一条消息并声明为 void

void pickFun(void *function_ptr[])
{
int pick = 0;
while(pick != 0)
{
scanf("%i", &pick);
*(function_ptr + (pick - 1));
}
}

当选择一个函数时,我永远无法显示该函数的 printf 语句。该程序只是循环并且从不打印每个函数中包含的消息。有什么建议或线索吗?

最佳答案

功能参数void *function_ptr[]类型为pointer to pointer to无效`。您需要将其更改为

void pickFun(void (*function_ptr[])(void));  

另请注意,正如其他人在注释中指出的那样,程序永远不会进入循环体。更好用do while在这里循环

void pickFun(void *function_ptr[])
{
do
{
scanf("%i", &pick);
//*(function_ptr + (pick - 1));
function_ptr[pick-1](); //Function call. pick should not be greater than 3
} while(pick != 0)
}

关于c - 数组和函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39739306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com