gpt4 book ai didi

c - 当函数返回时,在函数内部声明的指针发生了什么

转载 作者:太空宇宙 更新时间:2023-11-04 06:47:42 25 4
gpt4 key购买 nike

目标是现有指针的副本。如果我在返回之前没有将目标设置为 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;
}
}

最佳答案

If I don't set target to NULL before returning, will target be deleted such that the actual node target pointing to will be deleted as well?

没有,没有删除(释放的意思),只是堆栈中用于参数和局部变量(包括target)的区域不再退出函数返回后

当您返回(无论如何)局部变量的地址并在变量消失时取消引用它时会出现问题

注意:你用typedef来屏蔽指针,这是一个的想法,会让你的代码不清晰,容易引入bug

关于c - 当函数返回时,在函数内部声明的指针发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55879133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com