gpt4 book ai didi

c - 指针到指针 : How to return the modified values/structure back to the original list?

转载 作者:行者123 更新时间:2023-11-30 15:32:57 27 4
gpt4 key购买 nike

在为链接列表编写添加函数时,我想出了以下代码

    int addNode(node ** head)
{
1. node * ptr = *head;
if(ptr==NULL)
{
ptr = (node *)malloc(sizeof(node));
ptr->next = NULL;
ptr->val = (char *)malloc(10);
strcpy(ptr->val,"1");
2. *head = ptr;
}//Rest omitted

现在就我对指针到指针的理解而言,当我调用这个函数时

addNode(&n)

(n定义为node * n)我发送指针n的地址。 head = &n 截至目前?在 1 处,我使 ptr 指向 n,即 ptr = &n?是对的吗?我不明白的是为什么我需要设置 *head = ptr? ptr不是已经直接对n进行修改了吗? ptr 和 *head 不都指向 n 吗?

谢谢!

最佳答案

ptr 是 *head 的工作副本。与

node *ptr = *head;

你复制一份。如果使用 ptr,则不会对 head 进行任何更改,因为您复制了指针,但没有复制 ptrptr。 head 与 n 相同,只是函数中 n 的名称。所以 ptr 不会改变 n - 你使用该行

*head = ptr;

改变n。

关于c - 指针到指针 : How to return the modified values/structure back to the original list?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23884279/

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