我正在研究C中的单个链表,我想问为什么我们作为参数提供,例如,在插入函数void insert_element(struct Node** head, int element)
双指针,但在显示函数void display_list(struct Node* head)
单指针到头。它们都给出相同的地址(我们称插入函数为&
)。我们使用双指针因为我们修改列表插入或删除元素?
答案 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
函数不需要修改地址的内容,它只需要指向开始的指针。