無娛樂 2020-12-05 15:11 采纳率: 0%
浏览 7

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;语句有问题,有没有大佬能解答一下

  • 写回答

1条回答 默认 最新

  • abcd552191868 2020-12-05 18:24
    关注

    为什么 add=(struct Person *)malloc(sizeof(struct Person));知道申请内存,tail就不知道申请内存?

    评论

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法