首页 文章

C:链接的LIst和指向指针的指针

提问于
浏览
-1

将表示链接列表节点的结构:

typedef struct node{
    int val;
    struct node *next;
} node_t;

和我们的名单的负责人:

node_t *head;

现在,我想构建一个函数来创建列表中的第一个元素,当然这将由* head指向 . 在我的观点中,我将以函数的正确版本开始,我使用指向头部的指针,即双指针:

void createFirstElement(node_t **head, int value){
    *head=NULL;
    *head=malloc(sizeof(node_t));
    (*head)->val=value;
    (*head)->next=NULL;
}

当我使用那个版本的createFirstElement时,我得到了打印节点的值 . 但是我对我的第一个版本的createFirstElement有一个问题:

void createFirstElement(node_t *head, int value){
        head=NULL;
        head=malloc(sizeof(node_t));
        head->val=value;
        head->next=NULL;
 }

这个版本与双指针有什么不同?我仍然在参数中获取头指针(而不是指向头部的指针)并在内部进行所有更改 .

提前谢谢大家!

1 回答

  • 3

    C使用"call by value",因此在第二个版本中,您使用的是 node_t *head 的副本 . 函数返回时,传递给函数的 head 保持不变 .

相关问题