为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的程序运行的时候显示Segmentation fault (core dumped)

#include <stdio.h>
#include <malloc.h>
struct weapon {
       int price;
       struct weapon *next;
};
 struct weapon *create(){
 struct weapon *p1,*p2,*head;
 p2=p1=(struct weapon*)malloc(sizeof(struct weapon));
 return 0;
 scanf("%d",&p1->price);
 head=NULL;
 int n=0;
 while(p1->price != 0){
     n++;
     if(n==1) head=p1;
     else p2->next=p1;
 
     p2=p1;
     p1=(struct weapon*)malloc(sizeof(struct weapon));
     scanf("%d",&p1->price);
}
 p2->next = NULL;
 return (head);
}
int main(){
struct weapon *p;
 p=create();
 printf("%d",p->price);
return 0;
}

正在回答

1 回答

create函数的返回类型是struct weapon指针。

可在函数中,一开始声明了p1和p2两个指针,然后申请了一段内存,让p1和p2指向它。可紧接着就return 0; 了,函数就返回了!并且返回的是个NULL指针!  后面的代码完全没用到。

在main中,p得到的就是个空指针,访问空指针是不允许的! 所以后面printf在试图访问空指针时就引起了segmentation fault

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我的程序运行的时候显示Segmentation fault (core dumped)

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信