gpt4 book ai didi

c++ - 关于按引用调用的问题?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:09:00 26 4
gpt4 key购买 nike

main() 以参数 First Node 调用 Call_By_Test() 函数。我已经在 Call_By_Test() 中释放了第一个节点,但是在 main() 中没有释放第一个节点地址,为什么?。

typedef struct LinkList{
int data;
struct LinkList *next;
}mynode;

void Call_By_Test(mynode * first)
{
free(first->next);
first->next = (mynode *)NULL;
free(first);
first = (mynode *)NULL;
}
int main()
{
mynode *first;

first = (mynode *)malloc(sizeof(mynode));
first->data = 10;
first->next = (mynode *)NULL;

cout<<"\n first pointer value before free"<<first<<endl;

Call_By_Test(first);
// we freed first pointer in Call_By_Test(), it should be NULL
if(first != NULL)
cout<< " I have freed first NODE in Call-By-Test(), but why first node pointer has the value "<<first<<endl;


}

输出: 第一个指针值 0x804b008 我已经释放了 Call-By-Test() 中的第一个节点,但为什么第一个节点指针的值为 0x804b008

最佳答案

答案是您没有使用按引用传递。您正在按值传递指针 - 这不是一回事。这意味着您将看到指针引用的数据发生变化,但在 Call_By_Test 方法中更改 first 本身的值不会执行任何操作。

关于c++ - 关于按引用调用的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2266317/

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