看板 Programming 關於我們 聯絡資訊
如題 剛剛在寫linked list的時候 因為沒有將node的link設為NULL 導致在print list的時候產生無窮迴圈 例如: typedef struct node { int data; struct node* next; } NODE; 在設定時沒有initialize NODE* dataPtr; dataPtr = (NODE* )malloc(sizeof(NODE)); dataPtr -> next = NULL (少這行) 想請問為什麼沒有上述那行在print linked list時就會變成無窮迴圈?? 上網查後有點不太懂 網上是說沒有給NULL會變成garbage?? 但是我已經有給node分配memory了 為什麼還會有garbage的問題 或是我有哪裡理解錯了 感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.136.220 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1510567610.A.B1C.html
MOONRAKER: 阿你print list一定有個迴圈吧 他的 220.135.118.23 11/13 18:31
MOONRAKER: 停止條件是啥 220.135.118.23 11/13 18:31
alan23273850: 我猜迴圈是 while(dataPtr!=NULL) 123.193.38.80 11/13 19:26
alan23273850: 把pointer的位址印出來就知道了吧 123.193.38.80 11/13 19:26
stupid0319: stack or 或使用malloc取得的空間 122.117.78.26 11/14 11:40
stupid0319: 原空間原本的資料不一定是零 122.117.78.26 11/14 11:41
stupid0319: 若dataPtr->next不為0的話!= NULL 122.117.78.26 11/14 11:44
tailau0: C語言為了效率基本上不會雞婆做程式沒叫 76.103.100.123 11/15 15:19
tailau0: 它做的事。malloc只會去要一塊記憶體,不 76.103.100.123 11/15 15:19
tailau0: 會雞婆去歸零,不然如果程式要到記憶體下 76.103.100.123 11/15 15:19
tailau0: 一行就填值,歸零不就白做了?你如果想要 76.103.100.123 11/15 15:19
tailau0: 記憶體又要歸零,你可以呼叫calloc。 76.103.100.123 11/15 15:19
aulopiformes: 因為迴圈終止條件需要用的list的最 172.254.20.130 12/01 03:27
aulopiformes: 後一個node,這個node指向null 172.254.20.130 12/01 03:27