はじめての C

構造体について 3

構造体は、そのなかに 同じ型の構造体の ポインタを 含むことができ、自己参照構造体と 呼ばれています。

struct Node {
void *data;
struct Node *next;
};

これが、連結リストに 含まれた 単体の項目 - simple item - に 使われて、よく 見かける ノード構造体です。

その機能は、まあ わかりにくいでしょうが、ノードの値が 宣言されたとき、メンバに対して 作成されるのは、実際のノード ではなくて、ノードへの ポインタである、ということに 留意してください。

もし 実際に ノードが 作成されるとすると、それは 再帰的宣言 - recursive declaration - と いうことになって、メモリが 喰いつぶされるまで ノードが つくられることになります。

しかし この場合は、ポインタだと 再帰としては 機能しませんので、安全なのです。

構造体の 他の機能としては、ビットフィールドの 呼び出しに 使われることが あります。