作者:
siaco (@@)
2014-04-23 12:27:25新手想請教看到的一個問題:
鏈結陣列:
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 本身?
請問我的理解有錯嗎?