-1

そのため、私は関数ポインターを調べていました。私が見た例、特にこの回答here . それらはかなり冗長に見えます。

たとえば、次のコードがあるとします。

int addInt(int n, int m) {
    return n+m;
}
int (*functionPtr)(int,int);
functionPtr = &addInt;
int sum = (*functionPtr)(2, 3); // sum == 5

ここでは、関数ポインタを作成する意味がないように思えますが、これを行うだけの方が簡単ではないでしょうか?

int sum = addInt(2, 3); // sum == 5

もしそうなら、なぜそれらを使う必要があるのでしょうか?(そして、なぜ関数ポインタを他の関数に渡す必要があるのでしょうか)

4

6 に答える 6

1

ユーザーが関数を入力するライブラリを作成している場合はどうでしょうか? 任意のタイプで機能するqsortと同様ですが、ユーザーは比較関数を作成して提供する必要があります。

その署名は

void qsort (void* base, size_t num, size_t size,
        int (*compar)(const void*,const void*));
于 2013-10-07T01:02:49.647 に答える