1

n関数で配列を作成し、関数へのポインター (たとえば、パラメーターを持たず、int を返す関数) にメモリを割り当て、その配列へのポインターを返すようにします。

私はやってみました:

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

しかし、構文エラーが発生します。私はかなりc慣れていないので、この問題を解決する方法を1時間掘り下げようとしましたが、成功しませんでした。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 が必要ですsizeof()): 型を:でラップします。

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