• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:c言語 関数の引数に関数?他)

C言語の関数に関数を引数として渡す方法とは?

このQ&Aのポイント
  • 初心者でつまずいている方に、C言語で関数に関数を引数として渡す方法について教えていただけますか?
  • サンプルソースを見ている中で、MyFileRenderProc宣言内のMyACComplexInputProcとsetupCallbacks宣言内のMyFileRenderProcがどのようなものか疑問に感じています。関数の戻り値や引数の記述がないため、お教えいただけないでしょうか?
  • C言語で関数の引数に関数を渡す方法について、初心者がつまずくことがあります。アップルのサンプルソースを見ている中で、特定の関数に関して疑問が生じました。その関数は戻り値や引数の記述がないため、どのような状態なのか理解するのが難しいです。ご存知の方に教えていただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

AudioConverterFillComplexBuffer の第2引数プロトタイプ宣言や、renderCallback->inputProc での構造体メンバinputProcの型が書かれてないので確実とはいえませんが、まず間違いなくこれらは関数へのポインタ型変数で、参照されている MyACComplexInputProc や MyFileRenderProcは、関数自体(関数処理プログラムのアドレス)を表していると思います。関数アドレス自体でなく、別の「関数へのポインタ型変数」かもしれません。 下記のプログラムの意味が分かるでしょうか?2行目が関数アドレスの「関数へのポインタ」への代入、4行目が「関数へのポインタ」から「関数へのポインタ」への代入です。 double (*p)(double),(*q)(double); p=sin; q=cos; printf("%10.8f\n",(*p)(3.1416/2)); p=q; printf("%10.8f\n",(*p)(3.1416/2));

psychesine
質問者

お礼

ありがとうございます。 なんとなくわかりました。 これで前へすすめる事ができます。 助かりました。

関連するQ&A