讓我說我的鏈表中的類我保持一個指向鏈表頭的指針...在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