#include <stdio.h>
#include <stdlib.h>
struct node{
int data;
struct node *next;
};
void printList(struct node *head);
int main() {
struct node* head;
head->data =10;
head->next = NULL;
printList(head);
}
void printList(struct node *head){
struct node *ptr = head;
if (ptr->next = NULL){
printf("list is empty");
}
while(ptr != NULL){
printf("%d", ptr->data);
ptr = ptr->next;
}
}
我试图实现一个简单列表结构,但是遇到了一个分段错误。
有什么线索吗?
2条答案
按热度按时间7uhlpewt1#
您的代码存在一些问题
1.在main函数中,
head
指针没有初始化,你需要为它将要指向的对象分配内存。1.在printList函数中,if语句使用“=”赋值运算符而不是“==”比较运算符
des4xlb02#
这里有不同的问题。更好地检查指针在c中是如何工作的。
当你写
struct node* head;
这样的东西时,你只是添加了一个地址内存,指向另一个未定义的空间区域,所以,为了生成一些东西,你应该在访问那个内存区域和设置数据之前在里面分配一些内存。另一个问题是printList函数中的第一个if条件应该包含'=='而不是'='