看板 C_and_CPP 關於我們 聯絡資訊
struct Nodes { int data; Nodes *next; }; Node* ins(Nodes *ptr, int num) { Nodes *tmp_ptr = ptr; Nodes *ptrNewNode = new Nodes; ptrNewNode->data = num; ptrNewNode->next = NULL; if (ptr == NULL) { return ptrNewNode; } while (tmp_ptr->next != NULL) { tmp_ptr = tmp_ptr->next; } tmp_ptr->next= ptrNewNode; } int main() { Nodes *hdr = NULL; hdr = ins(hdr, 10); ins(hdr, 20); ins(hdr, 30); return 0; } 想要達成的效果是: hdr -> 10 -> 20 -> NULL 不過 trace 了程式後發現, hdr 的值永遠都是 null 參悟不透啊 T_T -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 67.220.217.190
nowar100:參數原本指向null 後來改指向一塊新的空間 可是hdr還是 07/28 18:23
nowar100:指向原來的null阿 所以當然沒變 07/28 18:23
homal:可是我把 hdr 傳到 ins() 內了,並指定 ptr=ptrNewNode 07/28 18:26
homal:這樣不就會改寫 ptr 的值了嗎 @@ 07/28 18:27
nowar100:hdr和ptr原本指到的是一樣的null 後來ptr自己去改指新的 07/28 18:27
nowar100:空間 但是hdr不會因此改變阿 他還是指向原來的null 07/28 18:28
homal:但是我不是傳了一個指標進去嗎 @@ hdr 這個指標 07/28 18:33
nowar100:你拿兩個箭頭指向同個東西 現在把其中一個箭頭移走 另一 07/28 18:33
nowar100:個不會隨之更動阿 你傳了指標的值進去 並不是指標本身 07/28 18:34
※ 編輯: homal 來自: 67.220.217.190 (07/28 18:39)
homal:您好,我改 code 了,現在是編譯不過 07/28 18:40
homal:expected constructor or type conversion before '*' token 07/28 18:41
homal:Node* ins(Nodes *ptr, int num) ,編譯器不讓我回傳 Node* 07/28 18:42
loveme00835:因為根本沒有Node 這個型別啊 = ˇ = 07/28 19:08
nowar100:如果照你這樣改,應該要回傳 struct Node* 而非 Node* 07/28 20:23
nowar100:而且你回傳的東西沒有人接 這個回傳沒有意義 07/28 20:24
nowar100:上一句當我沒說,看錯了,抱歉 07/28 20:25