1 自己参照的構造体

   1.1 構造体へのポインタ
 他の型の変数にポインタ型の変数が利用できたように、構造体の変数にもポインタ型の変数を利用できます。変数の定義は他の型と同様に変数の前にアスタリスク "*" を付けることで定義できます。
 例えば前章のアドレスデータの構造体のポインタ変数 "pd_p" を定義すると次のようになります。
typedef struct {
  char name[10];        /* 名前 */
  char address[20];     /* 住所 */
  double phone;         /* 電話番号 */
}personal_t;              /* アドレスデータ型の定義 */

/*** アドレスデータの構造体の変数とポインタ変数の定義 ***/
personal_t pd_a = {"A-san", "F-city", 9876543210},
  *pd_p;
 これで変数 "pd_a" はアドレスというタグの構造体、 "pd_p" は "personal_t" というタグの構造体へのポインタ変数として定義したことになります。

構造体へのポインタのイメージ