结构体指针分配的动态空间,是怎么在这段空间内给结构体成员赋值,存值的。
struct node{
float score;
};
void main()
{
struct node *p1;
//给结构体指针开辟动态空间.
p1=(struct node *)malloc(struct node);
//这一句不怎么理解.
scanf("%f",&p1->score);
}
/*
我是这样认为的:首先p1已经指向了一段已分配的连续空间的首地址,这是已知的.
其次, p1->score .我记得 只有当p1=&(一个结构体变量时).好象便可以间接指向。
例子.
struct node
{
float score;
};
结构体定义都一样.
void main()
{
//这里定义多定义个结构体变量.
struct node Temp,*p1; //Temp多定义的.
p1=&Temp;
scanf("%f",p1->score);//这样就可以。
//---------------------------------------
//但是,若 开辟动态内存空间.
p1=(struct node *)malloc(struct node);
//此时,这句就是不怎么懂.
scanf("%f",&p1->score);
// p1->score 书上说: 得到 p指向的结构体变量中的成员n的 值.
// 然后&取地址.,是怎么滴,就给分配的动态空间赋值了。
}
/*
求指教!请耐心回答,小生感激不禁!
重点的是:结构体成员 score它应该有自己的内存空间地址.
是怎么把值传递保存到了p1所开辟的内存地址当中,这里面有点小混乱。
*/
[ 本帖最后由 默默学习 于 2011-4-14 23:24 编辑 ]