关于c/c++里面结构体指针变量的申请空间问题。

这个问题是我在2020年刚开始学数据结构链表那一章遇到的,当时应该也没完全理解透彻,然后最近又遇到了,重新了解了一下。感觉网上许多人说的也未必正确,所以跟大家讲讲我的看法。
先得有两个知识前提:
1.首先是关于变量的内存分配问题。对于c里面自带的数据类型,只有定义和赋值两个环节,对于自定义的数据类型如struct,enum,union等,有声明,定义,赋值三个环节。然而变量的内存分配只在定义的时候进行。
2.再是指针的问题,指针是一种c自带的数据类型,指针自己的空间在定义指针变量的时候就会分配(如:int *p,struct LNode *p),然后就只剩下指针的赋值。它的赋值应当是一个内存空间当中的地址。

结论:结构体指针变量申请空间实质上不是给指针申请空间,因为指针在定义的时候就已经分配了内存,他有了空间了。实质上是相当于分配了一个结构体大小的内存在堆区里面给一个无名结构体,然后用这个结构体的初始地址给指针赋值。
malloc函数原型: void malloc(unsigned int size); //返回值是指向分配空间的首地址的指针
p=(struct LNode
)malloc(sizeof(struct LNode);

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值