结构体指针的一个问题
程序1:#include "stdio.h"
typedef struct link
{
int data;
struct link* next;
}node;
node* p()
{
node *head,*p,*q,r;
head=(node*)malloc(sizeof(node));
p=(node*)malloc(sizeof(node));
q=(node*)malloc(sizeof(node));
head->next=p;
p->next=q;
p->data=1;
q->data=3;
q->next=&r;
r.data=4;
r.next=NULL;
return head;
}
void main()
{
node *head,*ptr;
head=p();
ptr=head;
while(ptr->next!=NULL)
{
printf("%4d",ptr->next->data);
ptr=ptr->next;
}
}
----------------------------------------------------------------------------
程序2:
#include "stdio.h"
typedef struct link
{
int data;
struct link* next;
}node;
void main()
{
node *head,*ptr,*p,*q,r;
head=(node*)malloc(sizeof(node));
p=(node*)malloc(sizeof(node));
q=(node*)malloc(sizeof(node));
head->next=p;
p->next=q;
p->data=1;
q->data=3;
q->next=&r;
r.data=4;
r.next=NULL;
ptr=head;
while(ptr->next!=NULL)
{
printf("%4d",ptr->next->data);
ptr=ptr->next;
}
}
差别在于一个调用函数,一个都在主函数里面,为什么1不能运行,2可以运行??