1

我有一个这样的链接列表:

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

}LITEM,*P_LITEM,**PP_LITEM;

和四个指向指针的指针

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 回答