无夹心的奥利奥
2015-11-20 18:28
#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;
}
create函数的返回类型是struct weapon指针。
可在函数中,一开始声明了p1和p2两个指针,然后申请了一段内存,让p1和p2指向它。可紧接着就return 0; 了,函数就返回了!并且返回的是个NULL指针! 后面的代码完全没用到。
在main中,p得到的就是个空指针,访问空指针是不允许的! 所以后面printf在试图访问空指针时就引起了segmentation fault
Linux C语言结构体
118304 学习 · 162 问题
相似问题