関数へのポインタの配列を関数の引数として渡すにはどうすればよいですか?関数の型が無効でポインタがそうである場合、関数にはどのようにアクセスしますか?配列と関数ポインタ
int main() {
void(*fun_ptr[])(void) = {fun1, fun2, fun3};
pickFun(fun_ptr);
return 0;
}
すべての3つの機能は、メッセージを印刷し、私は機能が選択されたときに表示されるように関数のprintfの声明を得ることはできないのボイド
void pickFun(void *function_ptr[])
{
int pick = 0;
while(pick != 0)
{
scanf("%i", &pick);
*(function_ptr + (pick - 1));
}
}
として宣言されています。プログラムは単にループし、各機能に含まれるメッセージを印刷しません。任意の提案や手がかり?
まず、配列を使用している場合は、配列インデックス構文を使用します(例:代わりに 'function_ptr [pick-1]'を使うと、あなたがしていることがはっきり分かります。第二に、実際に関数を呼び出すことはありません。 –
ああ、3番目に、あなたのループ条件についてもう一度考えてみてください。 –
'int pick = 0; while(pick!= 0){... 'ループは決してチャンスを得られません。 –