1

私はこのようなリンクリストを持っています:

typedef struct _LIST_ELEMENT
{
    T* data;
    _LIST_ELEMENT* nextItem;
    int index;

}LITEM,*P_LITEM,**PP_LITEM;

およびポインタへの4つのポインタ

PP_LITEM _head;
PP_LITEM _tail;
PP_LITEM _current;
PP_LITEM _previous;

状況は次のようになります。

リストには4つの要素があり、_headは最初を指し、_tailは最後を指し、_currentと_previousはカーソルとして一緒に機能します。インデックス2の要素を消去した後、リストにはインデックス0、1、3の3つの要素が含まれ、すべてのポインターが右を指します。この時点でこれを行うと(カーソルを先頭に移動するため):

(*_previous) = (*_tail);
(*_current) = (*_head);

リストにインデックス1の要素がありませんが、すべてのポインターが正しくポイントしています。私がこれを行う場合:

_previous = &(*_tail);
_current = &(*_head);

すべてが順調で、何も欠けていません。

なぜこれが起こっているのか誰かが何か考えを持っているなら、私に教えてください。

4

1 に答える 1

4

(*_previous) = (*_tail)_previous = &(*_tail)まったく違うことを意味します。

(*_previous) = (*_tail)_previous「が指すものの値を、が指すものの値と等しくなるように設定する」という意味_tailです。

_previous = &(*_tail)はと同等であるため、「と同じものを指す_previous = _tailように設定する」という意味です。_previous_tail

于 2012-04-23T13:35:06.633 に答える