• ベストアンサー

C言語初心者です。

C言語初心者です。 構造体について勉強してるのですが、不明点があるため質問させて頂きます。 ---------------------------------- struct A{ int (*a)(struct B, struct C); int (*b)(struct B, struct C); } ---------------------------------- 上記の処理(構造体の中身)の書式について、書籍などで調べたのですが分かりません。 何を意味しているのでしょうか? ご回答のほど、よろしくお願いします。

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

  • ベストアンサー
  • zuntac
  • ベストアンサー率36% (45/124)
回答No.3

具体例を示します。ちょっと変形してますがエッセンスは同じです。 これを納得するまで勉強すれば一挙に初心者から抜け出せますよ。 typedef struct { int num; } B; typedef struct { int num; } C; typedef struct { int (*a)(B, C); } A; int func_a(B sb, C sc) { return sb.num + sc.num; } int main() { A sa = { &func_a }; B sb = { 12 }; C sc = { 341 }; printf("%d\n", (*sa.a)(sb, sc)); return 0; }

forza1204
質問者

お礼

ご回答ありがとうございます。 参考にさせて頂きます。

その他の回答 (2)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

int func(struct B, struct C)(※funcは任意の名前) のプロトタイプを持つ関数へのポインタを入れるa, bを持つ構造体A、です。 「初心者」がそこに進むには早いかもしれません。

forza1204
質問者

お礼

ご回答ありがとうございます。 参考にさせて頂きます。

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

これは、関数ポインタと呼ばれるものです。 aやbは、「構造体Bと構造体Cを引数として受け取ってintを返す関数へのポインタ」を表しています。

forza1204
質問者

お礼

ご回答ありがとうございます。 参考にさせて頂きます。

関連するQ&A