[英]Can't understand why I keep getting segmentation fault for this code
一个非常简单的代码:
typedef struct node {
int x;
struct node* next;
} *Node;
void advance_node(Node ptr) {
ptr = ptr->next;
while (ptr) {
printf("%d\n", ptr->x);
ptr = ptr->next;
}
}
int main() {
Node node1 = malloc(sizeof (*node1));
Node node2 = malloc(sizeof (*node2));
Node node3 = malloc(sizeof (*node3));
node1->x = 1;
node1->next = node2;
node2->x = 4;
node2->next = node3;
node3->x = 9;
node3->next = NULL;
advance_node(node1);
return 0;
}
我希望看到 4 和 9 的输出,但我一直收到分段错误。 我的错误在哪里? 这真让我抓狂。
由于NULL
指针,您可能会遇到段错误。
您可以在advance_node
函数中轻松防止这种情况,如下所示:
void advance_node(Node ptr) {
if(!ptr) return; //protect against NULL pointer
ptr = ptr->next;
while (ptr) {
printf("%d\n", ptr->x);
ptr = ptr->next;
}
}
我进行了此更改并在此处测试了您的代码: https : //onlinegdb.com/B1endJr9E
尝试将您的结构声明为
typedef struct node {
int x;
struct node* next;
} Node;
然后使用Node *node1 = malloc(sizeof (*node1));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.