今回は、構造体のポインタを使ってみましょう。
#include <stdio.h>
#include <string.h>
/* 構造体hitoを定義 */
struct hito {
int age; /* 年齢 */
char blood[3]; /* 血液型 */
};
void main(void) {
/* hito型変数masasiを宣言 */
struct hito masasi;
/* hito型構造体のポインタ変数pを宣言 */
struct hito* p;
/* 構造体masasiの先頭アドレスをポインタ変数pに代入 */
p = &masasi;
/* まさし君のプロフィールを設定 */
p->age = 10;
strcpy(p->blood, "A");
/* 年齢、血液型表示 */
printf("まさしくんのプロフィール\n");
printf("年齢:%d歳\n", p->age);
printf("血液型:%s型\n", p->blood);
}
プログラムを実行すると以下のようになります。
まずは、構造体hito型のポインタを宣言します。
/* hito型構造体のポインタ変数pを宣言 */
struct hito* p;
続いて構造体masasiの先頭アドレスをpに代入します。
/* 構造体masasiの先頭アドレスをポインタ変数pに代入 */
p = &masasi;
そして、pが指す値、
つまり構造体masasiの年齢、血液型を代入しています。
/* まさし君のプロフィールを設定 */
p->age = 10;
strcpy(p->blood, "A");
通常の構造体であれば、要素にアクセスするのに.(ドット)を使いましたが、
構造体のポインタは、構造体の先頭アドレスが入っていれば
その構造体の全要素に->(アロー演算子)でアクセス可能となります。