C程序,单链表尾插法报Access Violation错

struct Person
{
char name[40];
char phone[20];
struct Person *next;
};

void input(struct Person *person)
{
printf("请输入姓名:");
scanf("%s",person->name);
printf("请输入号码:");
scanf("%s",person->phone);
}

void addPerson(struct Person **person)
{
struct Person *add=NULL;
static struct Person *tail;
add=(struct Person *)malloc(sizeof(struct Person));
if(add==NULL)
{
printf("内存分配失败!");
exit(1);
}

input(add);

if(*person!=NULL)
{
tail->next=add;
add->next=NULL;
}
else
{
*person=add;
add->next=NULL;
}
tail = add;
}
int main(void)
{
struct Person *person;
int ch;
printf("是否录入数据?(输入-1结束录入)")
scanf("%d",&ch);
while(ch!=-1)
addPerson(&person);
return 0;
}
运行了以后会报错Access Violation,提示是addPerson()函数的tail->next=add;语句有问题,有没有大佬能解答一下

查看全部
qq_36814335
無娛樂
2020/12/05 15:11
  • c语言
  • 点赞
  • 收藏
  • 回答
    私信

1个回复