标题:求教!新手学习C语言
只看楼主
l_0121
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2012-12-6
结帖率:22.22%
已结贴  问题点数:6 回复次数:4 
求教!新手学习C语言
struct student {
    int a;
    char b[3];
    };

为什么要用malloc函数给结构体指针分配空间?
struct student  *np;struct student na;
 np = &na;
np = (struct name*)malloc(sizeof(struct name));
和另一种情况:

比如定义个指针指向一个结构体变量: struct student *p; struct student stu1; p=&stu1;不是也一样操作吗?

两种使用有什么不同?


[ 本帖最后由 l_0121 于 2012-12-18 22:00 编辑 ]
搜索更多相关主题的帖子: 学习 C语言 结构体 
2012-12-16 20:23
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
得分:3 
动态分配和指向一个变量是不一样的
动态分配是要给这个指针(没有指向任何结构体变量)指向的空间分配内存来存放数据,但是之定义了指针是没有分配指向的空间内存,所以要动态分配
指向一个结构体变量是不需要分配内存的,直接给指向的结构体变量的空间赋值

[ 本帖最后由 小小战士 于 2012-12-16 20:30 编辑 ]

小小战士,战士中的战斗机!
2012-12-16 20:29
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
得分:3 
struct student {
    int a;
    char b[3];
    };

这里并没有申明任何变量,严格的说这个结构体现在并没有内存,它只是一个类型而已
就像
int
没有增加任何空间,所以*p ->&a,可以说a不存在只有申明结构体变量时a才有自己的空间

I have not failed completely
2012-12-16 21:56
l_0121
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2012-12-6
得分:0 
回复 3楼 神龙赖了
我定义的是一个 struct student na;的结构体变量,不是里面的数据域a
2012-12-18 00:01
l_0121
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2012-12-6
得分:0 
回复 2楼 小小战士
本人比较笨,还是不明白,能再说的详细点吗。
2013-06-19 22:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-391525-1-1.html




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

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