target是现有指针的副本。 如果我在返回之前未将target设置为NULL,是否会删除目标,以便指向的实际节点目标也会被删除?
typedef struct node *Node;
void make_curr_point_to_specific_list(List list, int id) {
Node target = list->head;
while (target != NULL) {
if (id == target->id) {
list->curr = target;
// should i do "target = NULL;" before returning?
return;
}
target = target->next;
}
}
答案 0 :(得分:3)
如果我在返回之前未将target设置为NULL,是否会删除目标,以便指向的实际节点目标也会被删除?
不,没有删除(按 free 的意思),只是堆栈中用于参数和局部变量(包括 target )的区域不再存在函数返回后
返回(无论以何种方式)局部变量的地址并在变量消失时取消引用它会出现问题
备注:您使用 typedef 掩盖指针,这是一个坏的主意,使您的代码不清楚,并易于引入错误