質問: 「**矢沢久雄セレクション アルゴリズム&デザインパターン (日経BPパソコンベストムック)**」 の P13内にて、あるコードが掲載されています。 ``` struct MyList { int value; struct MyList* address; }; ``` このソースコードを見ると、「**struct MyList**」の部分は、**構造体を定義すること**だとは知ってます。 しかし、**3行目の「struct MyList* 」にて最後にアスタリスク(*)がついています**が、これは**どういう意味**なんでしょうか? さらに**3行目の「address」は、これは変数のことを指しているのでしょうか?** 第6章 C言語のポインタ ~ & と * を使ってみる ~のサイトを見てみると > > 変数名の前に * (アスタリスクと読む)を付けると、 ポインタ型の変数の箱を用意することになります。 そして、int 型の変数の住所(アドレス)を入れるためには、 int ポインタ型の変数を用意しなければなりません。もちろん、他の型の場合も同じです。 > > > と書かれておりますが、これは私自身の勝手な推測なんですが、 **「struct MyList* address;」のコードを分解**すると、 1. **「struct MyList*」→次のアドレス先** 2. **「address」→ポインタ変数** ↑このような(大雑把ではありますが)解釈でよろしいのでしょうか?(私自身何か勘違いしてると思いますが・・・) このコードに関して、不安になって、質問してしまいすいません。 お手数ですが回答の方、お願いします。
回答: > > 「struct MyList*」→次のアドレス先 > > > 「次」ってなんですかね・・・? いや確かにこういう構造体定義は単方向リンクリストの実装に使うパターンではありますが、そうと決まったわけではないですし・・・・。 > > ポインタ変数 > > > 構造体宣言の時点ではメモリー上のどこにも実体はありません。変数というのはメモリー上のどこかに実体があってその場所の別名です。 こいつは構造体のメンバーです。それ以上でも以下でもありません。