[英]C Segmentation fault in a Circularly Linked List when setting next pointer
[英]Setting a *next list pointer to NULL
我有一個包含幾個節點的列表。 我試圖通過聲明它的current->next
值為NULL
來標記最后一個節點。
因此,假設我的current
指向最后一個節點。 以下兩個代碼段的工作方式是否不同?如果是,則如何?
current->next = NULL;
和
current = current->next;
current = NULL;
我已經嘗試了一段時間,但是我真的不明白那里發生了什么。 我會說他們在做相同的事情,因為第二個問題首先將我的current
指向下next
位置,然后將其設置為NULL
。
編輯 :哦,我明白答案在說什么,現在對我來說也很明顯:)。 因此,如果我不使用第一種方法,而是選擇使用current = current->next
,那么有沒有辦法將NULL值放在應該的位置? 如何使用新的current
指向舊的next
指向的位置?
是的,這些不同,這是您想要的第一個版本。
在第二個中,您只更改了局部變量current
的值(為NULL
),而最后一個節點的next
指針保持不變(可能應該首先將其初始化為NULL
,但這也許就是您的意思)在做)。
前一個代碼片段將current
指向的結構的next
字段分配給NULL
。 第二代碼段使得current
在所述指針指向next
該結構的字段指向current
,然后設置current
到NULL
。
除非您有其他獲取結構體引用的方法,否則我真的不理解第二個結構體的用處,因為您實際上會通過丟失指向結構體的指針而與結構體脫離聯系。
因此,在前一種情況下:
current -> struct
next -> NULL
在后一種情況下:
current -> NULL
struct
next -> ????
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.