【发布时间】:2016-10-05 23:14:33
【问题描述】:
我不太清楚为什么这段代码没有创建一个有 5 个节点的链表,每个节点都有一个整数值。我目前遇到了段错误,我在发生错误的行上发表了评论。任何帮助将不胜感激,谢谢。
struct node{
int val;
node * next;
}
int main(){
node ** head;
for(int i = 0; i < 5; i++){
node * temp = new node;
temp->val = i;
(*head)->next = temp; //segfault here
}
}
【问题讨论】:
-
为什么
head首先是指向指针的指针? -
初始化
head可能是一个好主意,而不是仅仅使用它。取消引用未初始化的指针 = 崩溃。 -
你认为
(*head)会做什么? -
head 是指向指针的指针,以便稍后创建我的插入函数时方便和高效。 Tadman,你认为在 for 循环之前我应该说类似... head = new node;
-
head本身不需要是双指针。您可能的意思是您希望head成为插入主体内的双指针:void insert(node** head, int data),因此您可以简单地将head设为 main 内的单指针并传递其地址:insert(&head, x)。
标签: c++ struct linked-list segmentation-fault double-pointer