我有一个这样的链接列表:
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的元素后,列表包含3个元素,索引为0,1和3,所有指针都指向右侧。此时如果我这样做(将光标移动到开头):
(*_previous) = (*_tail);
(*_current) = (*_head);
列表缺少索引为1的元素,但所有指针都指向正确。 如果我这样做:
_previous = &(*_tail);
_current = &(*_head);
一切都很好,没有什么遗漏。
如果有人知道为什么会这样,请赐教。
答案 0 :(得分:3)
(*_previous) = (*_tail)
和_previous = &(*_tail)
意味着完全不同的事情。
(*_previous) = (*_tail)
表示“将_previous
指向的事物的值设置为等于_tail
指向的事物的值。
_previous = &(*_tail)
相当于_previous = _tail
,因此它意味着“设置_previous
指向与_tail
相同的内容。