让我说我的链表中的类我保持一个指向链表头的指针...在C++ /链接列表中的指针
在我写这个代码的成员函数之一..
Node *cur = head;
cur = cur->next;
为什么不换头head->next
?
如果我写cur = NULL
;它会使头null
?
让我说我的链表中的类我保持一个指向链表头的指针...在C++ /链接列表中的指针
在我写这个代码的成员函数之一..
Node *cur = head;
cur = cur->next;
为什么不换头head->next
?
如果我写cur = NULL
;它会使头null
?
如果你写:
Node *cur = head;
cur = NULL;
然后cur
将指向什么和什么都不会发生head
。
如果你写:
Node *cur = head;
cur = cur->next;
cur = NULL;
同样的事情会发生(cur
将指向什么和什么都不会发生head
),除非head
是NULL
,在这种情况下,你会崩溃的cur = cur->next;
如果你想通过cur
指针设置head->next
到NULL
,你可以用下面这样做:
Node *cur = head;
cur->next = NULL;
我可以看到你的困惑来自指针的本质。当您说Node *cur = head;
时,您正在创建一个Node
指针,指向与head
相同的内存地址。如果通过cur = NULL
设置cur
到别的东西,那么你只能改变什么cur
点,什么它指向,因此不值,head
被单独留在家中。
当您使用cur->next = NULL
相反,你修改的什么cur
点next
成员。这也是head
指向的next
成员,因此,该变更也反映在head->next
中。
cur.next = NULL;这会改变目标吗? –
@MadanLal'head'和'cur'指向同一个事物,任何一个操作都会影响另一个。 –
@MadanLal ...你需要使用' - >',因为'cur'是一个指针,所以它会是'cur-> next = NULL'。 – Foggzie
cur是指针,cur = cur-> next;只是让Cur点在别的地方,它为什么要改头换面呢?
我假设head
是Node *
。在这种情况下,当您说cur = cur->next
时,您正在更改cur
点的位置,但head
仍将指向列表头,因为您没有更改其指向的位置。
Cur----------|
|
V next
Head -----> Item 1--------->Item 2
cur = cur->next
产生如下:
Cur--------------------------|
|
next V
Head -----> Item 1--------->Item 2
那么,什么是* *变量? (忽略参考参数和所有爵士乐) – 2013-01-10 22:45:57
为什么你不试试看看你会得到什么结果? –
它与'int x = 0; int y = x; y = 1;'。为什么'x'的值在我们赋值给'y'时不会改变? – molbdnilo