第20回

構造体へのポインタ

99/06/29 タグの記述ミスで正しく表示されていない箇所があったので訂正した
98/11/06 IE4.xに対応させた

本講習では今日まで、変数へのポインタ(第9回)関数へのポインタ(第14回)ポインタへのポインタ(第16回)について学習してきました。そして前回学んだ構造体についても、それらと同様にそのアドレスを指し示すポインタが存在します。それを「構造体へのポインタ」と呼びます。まずは以下のプログラムを見て下さい。

#include<stdio.h>
typedef struct{
    char *name;
    int  lv;
}kozo;

main(){
    kozo a,*p;

    a.name="yxa";
    a.lv=99;

    p=&a;
    p->name="pygboku";
    p->lv=1;

    printf("Name:%s\nLV  :%d\n",a.name,a.lv);
}
で実行結果は、
Name:pygboku
LV  :1

mainの中にある
p=&a;
は、ご想像通り(?)「kozo構造体へのポインタpは、kozo構造体aのアドレスを指し示す」という意味です。
それと、その下の2行・・・
    p->name="pygboku";
    p->lv=1;
ここで、->演算子が用いられています。
この演算子は、構造体へのポインタを使って、メンバにアクセスしたい時に用いられます。.演算子で書くこともできるのですが、
     (*p).name="pygboku";
     (*p).lv=1;
といった具合に、ちょっとわかり辛くなってしまいます。まぁ、それが理由で、->演算子が用意されたみたいなんですけどね。

つづく。


[メニュー][第19.5回][第21回]

いーざ
email:CQP00202@nifty.ne.jp