柔性数组的使用与意义

也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。

C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。

柔性数组比较灵活,你可以根据你的需要去创建他的大小,你也可以在后期觉得大小不够了选择对其进行扩容。

柔性数组的特点:

1.结构中的柔性数组成员前面必须至少一个其他成员。

2.sizeof 返回的这种结构大小不包括柔性数组的内存

3.包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。

  1. 结构中的柔性数组成员前面必须至少一个其他成员。

因为我们的数组大小在算结构体的总大小的时候是不计算在内的,所以我们必须在前面有其他成员来表示我们这个结构体不是空的。

2.sizeof 返回的这种结构大小不包括柔性数组的内存。

只算了柔性数组前面成员所占位置的大小

3.包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。

当我们觉得数组的大小不够用的时候可以选择对数组进行扩容:

使用柔性数组的好处:

  1. 方便内存释放:

  1. 有利于访问速度:

连续的内存有益于提高访问速度,也有益于减少内存碎片。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值