用vc++编译时,没有任何错误,可是执行时说:0x0040116e指引用的0xcccccccc内存。该内存不能为read。
#include<stdio.h>#include<stdlib.h>
struct link
{
int data;
struct link *next;
};
struct link *creat(void)
{
struct link *head,*tail,*p;
head=tail=NULL;
printf("please input one number:");
p=(struct link *)malloc(sizeof(struct link));
scanf("%d",&p->data);
while(p->data!=0)
{
if(head==NULL) head=tail=p;
else
{
tail->next=p;
tail=p;
}
printf("please input one number:");
p=(struct link *)malloc(sizeof(struct link));
scanf("%d",&p->data);
p->next=NULL;
}
return(head);
}
/******************************/
output(struct link *head)
{
int k=0;
struct link *p;
printf("the link data is :");
while(p!=NULL)
{
k++;
printf("the %dTh is %d\n",k,p->data);
p=p->next;
}
}
/**********************************/
main()
{
struct link *head;
head=creat();
output(head);
}
用vc++编译时,没有任何错误,可是执行时说:0x0040116e指引用的0xcccccccc内存。该内存不能为read。
我编了几个链表的程序都是这样。但编写的其他程序又可以正常执行。请问是什么原因?