下面几行c代码中的错误是什么?
我已经用上面的c制作了一个链接列表,但是代码没有显示链接列表,而是显示空指针编译作为输出,如何解决这个问题,我是c代码新手,因此无法找到适当的解决方案???在使用下面几行c代码中的错误是什么?,c,pointers,C,Pointers,我已经用上面的c制作了一个链接列表,但是代码没有显示链接列表,而是显示空指针编译作为输出,如何解决这个问题,我是c代码新手,因此无法找到适当的解决方案???在使用malloc()分配*var后,您似乎缺少初始化*var的成员下一步 scanf的参数必须是指针类型。每次插入时,您都会将head重置为NULL。因此,您将始终在头部插入新值,而任何现有值都将留在内存中,从而导致内存泄漏 我猜您想移动行head=NULL到主方法的开头 然后像keeptalk说的那样修复你的scanf。这是一个调试服务吗
malloc()
分配*var
后,您似乎缺少初始化*var
的成员下一步
scanf
的参数必须是指针类型。每次插入时,您都会将head
重置为NULL
。因此,您将始终在头部插入新值,而任何现有值都将留在内存中,从而导致内存泄漏
我猜您想移动行head=NULL代码>到主方法的开头
然后像keeptalk说的那样修复你的scanf
。这是一个调试服务吗?至少先修复缩进。欢迎来到StackOverflow。张贴明确的问题,其中清楚地显示您尝试了什么,预期的结果是什么,以及您得到了什么。至少还应该知道struct node
。
struct node{
int data;
struct node *next;
};
struct node *head,*temp;
void insert()
{
struct node *var;
head=NULL;
var=(struct node*)malloc(sizeof(struct node));
printf("enter the data:");
scanf("%d",var->data);
temp=head;
if(head==NULL)
{
head=var;
head->next=NULL;
}
else
{
while(temp->next!=NULL)
{
temp=temp->next;
}
if(temp->next==NULL)
{
temp->next=var;
temp=temp->next;
temp->next=NULL;
}
}
}
void display()
{
temp=head;
if(temp==NULL)
{
printf("empty list");
}
while(temp->next!=NULL)
{
printf("%d",temp->data);
temp=temp->next;
}
}
void main()
{
int value,choice;
printf("\nenter choice:");
scanf("%d",&choice);
while(choice==1)
{
insert();
display();
printf("\nenter choice:");
scanf("%d",&choice);
}
getch();
}
scanf("%d",var->data);
//--> scanf("%d",&(var->data));