//samplecode1#include #defineLEN41structbook{chartitle[LEN];charauthor[LEN];}intmain(){structbook*b;//有意义的指针printf("Enterthebooktitle:");scanf("%40s",b->title);printf("Enterthebookauthor:");scanf("%40s",b->author);return0;}//samplecode2#include #defineLEN41structbook{chartitle[LEN];charauthor[LEN];}structbook*newBook();intmain(){structbook*b;//有意义的指针b=newBook();return0;}structbook*newBook(){structbook*temp;//NULL指针,为何?printf("Enterthebooktitle:");scanf("%40s",temp->title);printf("Enterthebookauthor:");scanf("%40s",temp->author);returntemp;}为什么上面两段代码,第一段可以跑,第二段在跑newBook()的时候就会报Segmentationfault..后来我在第二段代码中用structbook*temp=(structbook*)malloc(sizeof(structbook));之后第二段就不会报错了。。就有个疑问了。在第一段代码main中定义的book结构指针。这个指针是个有意义的指针。但是到了第二段代码的newBook方法中定义的话,就会是NULL指针。。求解。
SMILET
相关分类