- ベストアンサー
C言語初心者です。
C言語初心者です。 構造体について勉強してるのですが、不明点があるため質問させて頂きます。 ---------------------------------- struct A{ int (*a)(struct B, struct C); int (*b)(struct B, struct C); } ---------------------------------- 上記の処理(構造体の中身)の書式について、書籍などで調べたのですが分かりません。 何を意味しているのでしょうか? ご回答のほど、よろしくお願いします。
- みんなの回答 (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; }
その他の回答 (2)
- D-Matsu
- ベストアンサー率45% (1080/2394)
int func(struct B, struct C)(※funcは任意の名前) のプロトタイプを持つ関数へのポインタを入れるa, bを持つ構造体A、です。 「初心者」がそこに進むには早いかもしれません。
お礼
ご回答ありがとうございます。 参考にさせて頂きます。
- salsberry
- ベストアンサー率69% (495/711)
これは、関数ポインタと呼ばれるものです。 aやbは、「構造体Bと構造体Cを引数として受け取ってintを返す関数へのポインタ」を表しています。
お礼
ご回答ありがとうございます。 参考にさせて頂きます。
お礼
ご回答ありがとうございます。 参考にさせて頂きます。