[问题] 这题是否有问题

楼主: 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 本身?
请问我的理解有错吗?
作者: Feis (永远睡不着 @@)   2014-04-23 14:00:00
看起来是这个 delete 是要做出砍 node 本身的效果, 不是吗?
作者: AndyLeo (打败超越一切的人)   2014-04-23 14:11:00
方式不同,把下一个node copy到自己,free下一个node结果是砍掉了node本身,你的理解没错
楼主: siaco (@@)   2014-04-23 14:39:00
恩,打一打发现变讨拍文(误) 看到后很疑惑,怕自己又漏掉某种指标的用法,谢谢!

Links booklink

Contact Us: admin [ a t ] ucptt.com