[400] Re:「C言語 ポインタ 完全制覇」
投稿者:(ぱ)
2007/02/20 02:13:25
>こんにちは、はじめまして。
はじめまして。ミスが多く申し訳ありません。
>「
>p.285
>誤
>
> typedef struct Linkable_tag {
> void *object;
> Shape *prev;
> Shape *next;
> } Linkable;
>
>正
>
> typedef struct Linkable_tag {
> void *object;
> struct Linkable_tag *prev;
> struct Linkable_tag *next;
> } Linkable;
>」
>とあります。
>しかし、P285にあるプログラムは2つあるのですが、
これは、「Linkable」の定義に対する修正ですから、ひとつめの方です。
Linkableは、その前のページのFig.5-15におけるLinkableShapeに対応する型で、
ポインタを3つ持ち、双方向連結リストを構成します。
>となっていて、2つめは
>「
>typedef struct{
> Linkable *head; /* 先頭の要素 */
> Linkable *tail; /* 末尾の要素 */
>}LinkedList;
>」
こちらは、双方向連結リストの先頭と末尾を保持することで、「リスト全体」を
表現する構造体です。
>それと、P43のところで、正誤表では、
>「
>と書いてありますので、ふたつ超えた所に向けない限り問題なさそうです。
>」
>となっていますが、本では、
>「
>と書いてありますので、2以上加算しないかぎり問題なさそうですが。
>」
>とあります。
同じ意味のつもりで書いていますが…
int a;
int *p;
p = &a;
とあったとき、pに1加算するだけなら問題ないが、2加算すると規格違反である、
という意味です。
# ただし、たいていの処理系では、2だろうと3だろうと、加算するだけなら動きます。