【发布时间】:2019-02-03 20:31:46
【问题描述】:
对如何访问存储在 void 指针 (void *) 中的函数指针感到困惑。
假设你有这个:
void *functions[] =
{
&sqrt, // int ft_sqrt(int nb);
&power,
&logN,
&factorial;
};
// An array of void pointers, each storing a function pointer.
如果我想访问sqrt 函数,我的猜测如下:
(int (*)(int)) functions[0](x)
但我的猜测是错误的:
error: called object type 'void *' is not a function or function pointer
那么如何访问这些功能之一呢?
【问题讨论】:
-
为什么要将函数指针存储在指向 void 的指针数组中? 特别是,如果您打算打电话给他们。
-
好吧,idk,也许这不是这样做的方法,但我在想如果你有不同返回类型和/或采用不同参数的函数..你可以将它们全部存储在 1数组。
-
如果你不知道函数的返回类型,你将如何有意义地调用它?
标签: c pointers function-pointers void-pointers typecasting-operator