C语言中链表中的结构体指针变量问题。。。求教

用C编链表时,声明结构体指针变量的时候,难道没有为其分配内存吗?还要另外用malloc函数为其分配内存。。这内面到底是个什么样的过程,请高手讲解讲解。。。所说指针是想加上... 用C编链表时, 声明结构体指针变量的时候,难道没有为其分配内存吗? 还要另外用malloc函数为其分配内存。。 这内面到底是个什么样的过程,请高手讲解讲解。。。
所说指针是想加上一个链节时定义的指针
展开
 我来答
百度网友1fc36d4
推荐于2016-10-04 · TA获得超过3131个赞
知道大有可为答主
回答量:1497
采纳率:100%
帮助的人:1826万
展开全部
定义结构体指针变量时,只分配存储指针类型需要的空间,比如ListNode *p;这里p有给他分配存储指针的4个字节的空间。
实际上你是要让p指向一个结构体空间的,这个结构体空间在哪?
可以先定义ListNode a;
然后 p=&a;
这时p指向一个之前申请分配过空间(编译器设定过其地址和大小,在栈空间存放着了)。
现在我们要让p指向一个临时决定分配的空间(我们需要用来存储输入信息或计算信息),并让p指向他,使得之后我们随时通过p来访问他。于是使用malloc先分配内存,并把malloc返回的地址赋值给p。在这里,我们不能使用定义临时结构体变量并让p之前他(就如上面所说的p=&a),因为在子函数定义的变量,他们都是分配在子函数被调用时为其创建的栈空间,子函数退出时这些空间被释放回收,我们定义的变量生命结束,他们所在地址会被其他子函数被调用时创建栈空间所重用,那些地址很可能被新函数使用并修改所存数据。这是我们不敢想象的,为了数据安全,必须使用malloc分配内存,因为malloc分配的内存是在堆空间分配,只有使用free后,其内存才会释放,才能被其他地方重新分配。
透明的沙漏aa
2011-09-27
知道答主
回答量:14
采纳率:0%
帮助的人:13.5万
展开全部
指针声明的时候只是开辟了一个存放地址的内存,不管你这个指针是指向对象的还是char还是别的类型,指针声明开辟的空间是一样的,因为对于指针来说它存的只是地址,至于地址里面的是char还是long对于声明指针的内存是没有关系的,所以如果指针要装东西,需要malloc一个内存来存放char或者long型的东西
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tuxtoken
2011-09-27 · TA获得超过601个赞
知道小有建树答主
回答量:540
采纳率:0%
帮助的人:502万
展开全部
声明结构体指针变量的时候,难道没有为其分配内存吗?
A:没有,需要malloc
这和普通的指针分配没有区别。
typedef struct stu
{
int id;
char *str;
} stu_t;
void main()
{
stu_t * p;
p = (stu_t *) malloc(sizeof(stu_t));
if(p)
p->str = (char *)malloc(VALUE);
...
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-01-10
展开全部
在3kw的电炉盘上装上5kw的炉丝可以吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式