[問題] 問一串連結構的問題

看板C_and_CPP作者 (如果)時間16年前 (2009/10/10 14:06), 編輯推噓2(207)
留言9則, 3人參與, 最新討論串1/2 (看更多)
typedef struct list { int number; struct list *next; }node; void main(void) { node *ptr,*new; char ch1,ch2; ptr=(node*)malloc(sizeof(node)); ptr->number=ch1; ptr->next=NULL; new=(node*)malloc(sizeof(node)); new->number=ch2; new->next=NULL; ptr->next=new; ptr=ptr->next; 請問這一行是否會覆蓋到ch1的值?? 謝謝... while(ptr!=NULL) { printf("%c\n",ptr->number); ptr=ptr->next; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.169.0.12

10/10 14:57, , 1F
1. ptr裡根本沒有new這個member, 只有next; 理論上只是
10/10 14:57, 1F

10/10 14:57, , 2F
接指標不應該覆寫struct的內容.
10/10 14:57, 2F

10/10 14:58, , 3F
2. 置底十誡之三, 你的兩個指標根本就沒有配置空間給它,
10/10 14:58, 3F

10/10 14:59, , 4F
你不應該直接就->拿來用, 應該先替node用malloc配置
10/10 14:59, 4F

10/10 14:59, , 5F
空間才能用.
10/10 14:59, 5F
※ 編輯: HPMC 來自: 218.169.0.12 (10/10 15:09)

10/10 15:12, , 6F
不會覆蓋到,因為ch1已經不知道去哪了;這叫memory leak
10/10 15:12, 6F

10/10 15:13, , 7F
使用鍊結串列記得要把串列的頭固定記下來, 不然你就得再
10/10 15:13, 7F

10/10 15:14, , 8F
加個prev指標, 讓串列變雙向的指回去XD
10/10 15:14, 8F

10/10 15:42, , 9F
幹麻兩次ptr->next= malloc完再做阿 XD
10/10 15:42, 9F
文章代碼(AID): #1Aq2HAzb (C_and_CPP)
文章代碼(AID): #1Aq2HAzb (C_and_CPP)