有关结构体类型中的内存分配问题
各位大虾,小弟刚刚在tc环境下做一个关于结构体和指针的练习。
我定义了一个结构体
typedef struct {
int data;
struct node* next;
}node ;
然后在main()函数中的程序如下
void main()
{ node *head ;
node* second;
node* third;
node* p;
head->data=1;
second->data=2;
third->data=3;
head->next=second;
second->next=third;
third->next=NULL;
p=head;
/* printf("%d\n",p->data);
printf("%d\n",head);
printf("%d\n",second);
printf("%d\n",third);*/
while(p!=NULL)
{printf("%d\n",p->data);
p=p->next;
}
}
我就是想给定义的三个结构指针变量赋值,然后用NEXT指针把它们串起来,最后打印出来,可是我显示的结果只有1,其他的两个变量中的data数据没有打印,我本以为在给 node *head ;node* second;node* third;三个变量赋值后会自动分配内存地址,可是我把/* ---*/中的程序加入到原程序中发现second的地址为零,难道自动分配的地址里会有0吗?我又尝试自己给三个结构指针变量赋上地址值,赋值后得到自己想要的结果,可是我看到的书上面写的程序里都不时手工赋地址的,也没有考虑自动分配的地址里会有O的情况,所以我想问问,是不是不同的编译器对地址的处理会不相同(比如会把0作为有效地址分配给变量),对于地址和指针可能我还不是很熟悉,哪位大虾给我详细说一下也好。