1

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

我试着做:

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

但我收到语法错误。我很陌生c,我试图挖掘一个小时如何解决这个问题,但没有成功。使用man我认为的页面calloc是要走的路,但我可能错了。

4

2 回答 2

8

让您的生活更轻松并使用typedefs:

typedef int (*fp)();

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

手卷宣言:int (*f(size_t n))()

于 2012-12-28T15:52:13.397 回答
2

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

return calloc(n, sizeof(int (*)(void)));
于 2012-12-28T15:56:44.873 回答