• 締切済み

関数ポインタについて

C言語の関数ポインタの問題で以下のような問題で、実際に解いて、プログラムを動かしてみてみました。 正常に動作したのですが、この回答では満点はもらえませんでした。 このほかに良い解答例などありましたら、教えていただけないでしょうか。 どうかよろしくお願い致します。 [問題]次の※1・※2を埋めなさい(「func1」,「func2」は解答に含まれないように書くこと)。 #include <stdio.h> void func1() { printf("func1\n"); } void func2() { printf("func2\n"); } void func(int no) { void (*func[2])(void) = {func1, func2}; /* ※1 (*func[no])() */; } int main() { /* ※2 func(1) */; return 0; } 実行結果:func2

みんなの回答

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.5

「void func(int no)の仕様が不明なので、回答不能です」って回答するとどうなるのかな?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

いや, 「穴埋め」とかそんなのはどうでもよくて, この関数 func がどのようなものなのか仕様を与えないと無意味だね, ってこと. 極端にいえば, ※1 のところを func[1](); と書いたっていいことになっちゃう.

  • ts244
  • ベストアンサー率41% (53/127)
回答No.3

※1を(*func[no ? 1 : 0])() にしろ なんてことは無いですよね?

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.2

察するに、func(1)と指定しているのにfunc2と出力されるのは可読性が悪いので中間点、といったところでしょうか。 1なのか2なのかはっきりしろ! という。 ※1を (*func[no-1])() にすれば、1と2でそれぞれ対応がとれてよさそうだけど。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

何をするプログラムなんでしょうか? ちなみにどんなプログラムが「満点」なんでしょうか?

know_smthg
質問者

補足

>Tacosanさんへ これはプログラミングの穴埋め問題になっていて、 空欄(ここでは※1、※2)にプログラムを入力して採点してもらうと、 正解か不正解か表示される方式となっています。 ちなみに解答は表示されないので、何が正しいのか 正解するまでわかりません。

関連するQ&A