[問題] 這題是否有問題

看板C_and_CPP (C/C++)作者 (@@)時間12年前 (2014/04/23 12:27), 12年前編輯推噓0(005)
留言5則, 3人參與, 最新討論串1/1
新手想請教看到的一個問題: 鏈結陣列: struct data { int value; datatype *pt; }; void deletept(struct data *dataptr) { struct data *temp; temp = dataptr->pt; *dataptr = *(dataptr->pt); free(temp); } 我想問的是為什麼這邊*dataptr = *(dataptr->pt); 這樣不就只是很單純的把下一個值的value搬過來而已嗎? 我的理解裡*是指標,可以將記憶體中的值取出來 而link list 的delete,一般是delete 傳入node的next node, 應該是用*dataptr->pt=*dataptr->pt->pt才對, 而這題只是單純的把*dataptr(取出data物件)後又把*(dataptr->pt)assign給他, 然後再free dataptr->pt,這樣是變成砍node 本身? 請問我的理解有錯嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.74.180.10 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1398227248.A.F77.html ※ 編輯: siaco (203.74.180.10), 04/23/2014 13:38:34

04/23 14:00, , 1F
看起來是這個 delete 是要做出砍 node 本身的效果, 不是嗎?
04/23 14:00, 1F

04/23 14:11, , 2F
方式不同,把下一個node copy到自己,free下一個node
04/23 14:11, 2F

04/23 14:12, , 3F
結果是砍掉了node本身,你的理解沒錯
04/23 14:12, 3F

04/23 14:39, , 4F
恩,打一打發現變討拍文(誤) 看到後很疑惑,怕自己又漏掉
04/23 14:39, 4F

04/23 14:39, , 5F
某種指標的用法,謝謝!
04/23 14:39, 5F
文章代碼(AID): #1JLq4mzt (C_and_CPP)
文章代碼(AID): #1JLq4mzt (C_and_CPP)