• 締切済み

構造体変数がないとメンバ操作できないのはなぜ?

C言語の構造体に関して質問がありますが、structで型を作成して、構造体変数にてメンバの代入・参照をする。ということなんですが、なんでメンバ操作には構造体変数からでないといけないのでしょうか? 直接、型枠にてメンバ操作をすれば良いのに、なぜ構造体変数から操作しないといけないのでしょうか? 「クラス」や「オブジェクト」みたいに、一々ゼロから作成したり、コピペで作成しなくても済むように、このような形になっているのでしょうか? 回答の方よろしくお願いします。

みんなの回答

回答No.2

あ、すいません。昨日のコメント、 酒飲んでて覚えてなかったので。スルー頼ます。

回答No.1

例えば、そのstructで2個の構造体変数を作ったとします。 どっちを今から書き換える?と区別するにはどうしますか? 根元がないと、今から触る構造体を区別できないのでは? というイメージはいかがでしょうか? [class_AAA.h] struct AAA { int a; int (*get)(struct AAA *); vod (*set)(struct AAA *,int new_a); }; struct AAA *create_new_AAA(void); これを構造体として、 [class_AAA.c] static int _get(struct AAA *this) { return(this->a); } static void _set(struct AAA *this,int new_a) { this->a=new_a; } struct AAA *create_new_AAA(void) { struct AAA *n=(struct AAA *)malloc(sizeof(struct AAA)); n->a=0; n->get=_get; n->set=_set; return(n); } とでも初期化したとして、 使用時・・・例えば struct AAA *a,*b; a=create_new_AAA(); b=create_new_AAA(); a->set(a,50); b->set(b,a->get()); 結局どっちがどっちか?を表すには、元の変数が必要でしょ。。 ってな・・・

関連するQ&A