関数を呼び出したいのですが、この関数はいくつかの計算を行い、別の関数ポインターを返します。関数型ANSI C
を作成せずにそれは可能ですか? enum
もしそうなら、どうすればその関数を宣言できますか?
1 に答える
0
おそらく、別の関数へのポインタを返したいでしょう。ポインターの構文はvoid (*myFuncPtr)(int)
、myFuncPtr が変数名になるようなものです。ほとんどの場合、常に入力しないように typedef を作成したいと思うでしょう。最小限の例:
#include <stdio.h>
typedef int (*PUTS_PTR)(const char*);
PUTS_PTR ret_puts () {
return puts;
}
int main () {
PUTS_PTR pFunc = ret_puts();
(*pFunc)("Hello");
}
pFunc("Hello")
の代わりに同様に関数ポインタ呼び出しを書くこともできます(*pFunc)("Hello");
。しかし、2 番目の構文では、ポインターの初期化またはチェックを忘れる可能性が低くなります。
于 2015-08-28T11:40:09.290 に答える