c-将内存分配给函数指针数组

c-将内存分配给函数指针数组,c,memory,C,Memory,我希望我的函数创建一个数组,为函数的n指针(例如,没有参数且返回int的函数)分配内存,并返回指向该数组的指针 我试着做: void* f(int n){ return calloc(int (*arrayName[])(void),n); } 但是我有一个语法错误。我对c相当陌生,我花了一个小时试图研究如何解决这个问题,但没有成功。使用man页面我认为calloc是一种方法,但我可能错了。让你的生活更轻松,使用typedefs: typedef int (*fp)(); fp * f

我希望我的函数创建一个数组,为函数的
n
指针(例如,没有参数且返回int的函数)分配内存,并返回指向该数组的指针

我试着做:

void* f(int n){
   return calloc(int (*arrayName[])(void),n);
}

但是我有一个语法错误。我对
c
相当陌生,我花了一个小时试图研究如何解决这个问题,但没有成功。使用
man
页面我认为
calloc
是一种方法,但我可能错了。

让你的生活更轻松,使用
typedef
s:

typedef int (*fp)();

fp * f(size_t n)
{
    return calloc(n, sizeof(fp));
}

手卷声明:
int(*f(size\t n))()

让您的生活更轻松,使用
typedef
s:

typedef int (*fp)();

fp * f(size_t n)
{
    return calloc(n, sizeof(fp));
}

手动声明:
int(*f(size\t n))()

或者如果您不想要一个typedef(提示:您仍然想要一个typedef,只是为了完整性):用
sizeof()包装该类型:


或者如果您不需要typedef(提示:您仍然需要typedef,只是为了完整性):将类型包装在
sizeof()中。


我有点好奇为什么需要分配一个函数指针数组。您正在动态创建代码吗?或者,您正在构建某种动态编程环境,将函数链接在一起,然后一个接一个地执行它们。我想说的是,这“闻起来像是坏代码”。我有点好奇为什么需要分配一个函数指针数组。您正在动态创建代码吗?或者,您正在构建某种动态编程环境,将函数链接在一起,然后一个接一个地执行它们。我想说的是这个“闻起来像是坏代码”。呸,有人真的对这个答案投了反对票?这太不酷了+我对答案投了反对票。我想这应该说明汤姆的尝试有什么问题。可能会说一些关于如何使用calloc,为什么malloc可能也是正确的,一些关于sizeof的用法。。我的意思是,你只是说“使用typedef”而不是解释他做错了什么……呸,有人真的对这个答案投了反对票?这太不酷了+我对答案投了反对票。我想这应该说明汤姆的尝试有什么问题。可能会说一些关于如何使用calloc,为什么malloc可能也是正确的,一些关于sizeof的用法。。我是说,你只是说“使用typedef”而不是解释他做错了什么。。