假设在我的链表类中,我保留了一个指向链表头部的指针......
当我编写此代码时,在其中一个成员函数中......
Node *cur = head;
cur = cur->next;
为什么头不改变head->next?
如果我写cur = NULL;它会让人头疼null吗?
假设在我的链表类中,我保留了一个指向链表头部的指针......
当我编写此代码时,在其中一个成员函数中......
Node *cur = head;
cur = cur->next;
为什么头不改变head->next?
如果我写cur = NULL;它会让人头疼null吗?
我假设这head是一个Node *. 在这种情况下,当您说cur = cur->next您正在更改 wherecur点时,但head仍将指向列表的头部,因为您没有更改它指向的位置。
Cur----------|
|
V next
Head -----> Item 1--------->Item 2
cur = cur->next产生以下结果:
Cur--------------------------|
|
next V
Head -----> Item 1--------->Item 2
如果你写:
Node *cur = head;
cur = NULL;
然后cur将指向任何内容,并且不会发生任何事情head。
如果你写:
Node *cur = head;
cur = cur->next;
cur = NULL;
同样的事情会发生(cur将指向任何东西,也不会发生任何事情head),除非headwas NULL,在这种情况下,你会崩溃cur = cur->next;
如果您尝试通过指针设置head->next,NULL可以cur使用以下方法进行设置:
Node *cur = head;
cur->next = NULL;
我可以看到您的困惑来自指针的性质。当您说Node *cur = head;您正在创建一个Node指向与head. 如果您cur通过 设置为其他内容cur = NULL,那么您只是更改指向 的内容,而不是它所cur指向的内容的值,因此不会受到影响head。
当您改为使用时,您正在cur->next = NULL修改指向next的成员。这也是what指向的成员,因此变化也反映在.curnextheadhead->next
cur 是指针,cur = cur->next; 只是在其他地方提出当前观点,它为什么要换头?