指向指针赋值的指针

时间:2012-04-23 13:23:32

标签: c++ list pointers

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

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);

一切都很好,没有什么遗漏。

如果有人知道为什么会这样,请赐教。

1 个答案:

答案 0 :(得分:3)

(*_previous) = (*_tail)_previous = &(*_tail)意味着完全不同的事情。

(*_previous) = (*_tail)表示“将_previous指向的事物的值设置为等于_tail指向的事物的值。

_previous = &(*_tail)相当于_previous = _tail,因此它意味着“设置_previous指向与_tail相同的内容。