链表中的不同指针

时间:2018-05-15 22:15:07

标签: c

我正在研究C中的单个链表,我想问为什么我们作为参数提供,例如,在插入函数void insert_element(struct Node** head, int element)双指针,但在显示函数void display_list(struct Node* head)单指针到头。它们都给出相同的地址(我们称插入函数为&)。我们使用双指针因为我们修改列表插入或删除元素?

2 个答案:

答案 0 :(得分:7)

如果新元素成为头部,则必须修改头部。只显示列表,头部就不会有变化。

答案 1 :(得分:0)

因此,当您想要修改基本对象时,您将传递其指针。因此,如果要在另一个函数中修改int变量,则将指针传递给它。对于指针也是如此,修改指针需要指针,否则你的修改将是你调用的函数的本地修改。因此,在代码透视图中,您有:

void insert_element(struct Node** head, int element) {
    struct Node* newNode;
    *head = newNode;
}

如果您有这样的事情:

void insert_element(struct Node* head, int element) {
    struct Node* newNode;
    head = newNode;
} 

第一个会得到头部的地址并对其进行修改,第二个会自行修改head并且是insert_element()函数的本地地址。

另一方面,display_element函数不需要修改地址的内容,它只需要指向开始的指针。