//代码段1:
#include<stdio.h>
#include<stdlib.h>
typedef struct student
{
int no;
struct student *next;
}student;
int main()
{
student *head=NULL,*p1=NULL,*p2=NULL,*p=NULL;
p1=(student *)malloc(sizeof(student));
printf("Input No:");
scanf("%d",&p1->no);
while(p1->no)
{
//if(head==NULL)
// head=p1;
//else
p2->next=p1;
p2=p1;
p1=(student *)malloc(sizeof(student));
//p2=p1;
printf("Input No:");
scanf("%d",&p1->no);
}
p=head;
while(p)
{
printf("%d\n",p->no);
p=p->next;
}
return 0;
}
//代码段2(即把注释去掉):
#include<stdio.h>
#include<stdlib.h>
typedef struct student
{
int no;
struct student *next;
}student;
int main()
{
student *head=NULL,*p1=NULL,*p2=NULL,*p=NULL;
int n=0;
p1=(student *)malloc(sizeof(student));
printf("Input Student's No.:");
scanf("%d",&p1->no);
while(p1->no)
{
n++;
if(head==NULL)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(student *)malloc(sizeof(student));
printf("Input Student's No.:");
scanf("%d",&p1->no);
}
p=head;
while(n)
{
printf("\n%d",p->no);
p=p->next;
n--;
}
return 0;
}
RT,运行代码段1时,输入第一个数据就提示段错误,而代码段2不会
忘了说一下,我是在linux环境下的c。
代码段2是没有问题的,我只想知道代码段1跟代码段2的区别是什么?以及代码段1为什么会出现错误,该如何解决,谢谢