| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6102 人关注过本帖
标题:结构体指针分配的动态空间,是怎么在这段空间内给结构体成员赋值,存值的。
取消只看楼主 加入收藏
默默学习
Rank: 4
等 级:业余侠客
帖 子:134
专家分:200
注 册:2010-6-22
结帖率:84.21%
收藏
已结贴  问题点数:30 回复次数:2 
结构体指针分配的动态空间,是怎么在这段空间内给结构体成员赋值,存值的。
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 编辑 ]
搜索更多相关主题的帖子: 结构体 空间 
2011-04-14 23:20
默默学习
Rank: 4
等 级:业余侠客
帖 子:134
专家分:200
注 册:2010-6-22
收藏
得分:0 
回复 2楼 你们都要疼我哦
`
2011-04-14 23:45
默默学习
Rank: 4
等 级:业余侠客
帖 子:134
专家分:200
注 册:2010-6-22
收藏
得分:0 
这样吧,细化"最简短的一个问题".
"为什么 p->Temp" 指针p指向Temp后 "& p->Temp". 里面的存值是放到了动态开辟的空间.
我一直认为的是:指针只有取结构体成员变量地址,再进行指向的.
如: p=&Temp 那么p->Temp.score 输出 成员值. 因为p指向的是Temp结构体变量.
当p指向分配的动态空间首地址时候. 为什么 p->Temp可以输出,而且地址变到了 开辟分配的动态空间?
2011-04-15 10:44
快速回复:结构体指针分配的动态空间,是怎么在这段空间内给结构体成员赋值,存值的 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018058 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved