***ポインタ変数について***

ここではポインタ変数について簡単な説明をします。もう少し詳しい説明は第三部に入ってから行います。

ここでは構造体とポインタ変数の関係を中心に説明を行います。

図2-2-1を見て下さい。

図2-2-1

この図の構造体の中にある赤字で書かれたところがポインタ変数です。

ここではポインタ変数 next を定義しています。決して*nextではないことに注意して下さい。

ここで定義されたnextは何を表すのかというと、データ *nextが格納されている場所の先頭のアドレスを表しています。ここでのポインタ変数は構造体Nameへのポインタです。

ポインタ変数はアドレスを表していますから、ポインタ変数への代入はポインタ変数同士で行うか、図2-2-2のように&記号をつけて行います。

図2-2-2

この&はアドレス演算子と呼ばれるもので変数のアドレスを参照するのに使用します。ここでは変数 b のアドレスを参照するために用いています。

このように構造体変数 a のメンバ next に構造体変数 b のアドレスを代入するとどのような事ができるのでしょうか、このことは図2-2-3を参照して下さい。

図2-2-3

これを見れば分かるでしょうが、構造体変数 a からメンバ演算子を用いることによって、構造体変数 b のメンバを参照する事ができるのです。

ところでここで使用している->ですが、これもメンバ演算子の一種です。この演算子はポインタ変数からメンバを参照する時に使用します。

このようにポインタ変数と構造体を組み合わせる事で二つの構造体を繋げる事ができます。(図2-2-3においては構造体変数 a と b を繋げた)

このように構造体の中にそれ自身へのポインタ変数を持つ構造体を自己参照構造体と呼びます。自己参照構造体を利用したプログラムの説明は次の回を見て下さい。