【无标题】

柔性数组

定义

在至少两个成员的结构体中,最后一个成员其类型若是不完整类型的数组类型,则该成员称为柔性数组

注意

  1. 结构体中的柔性数组成员前面必须至少含有一个别的类型的成员
  2. sizeof返回的结构体的大小不包含柔性数组的大小
  3. 包含柔性数组成员的结构体的大小用malloc函数动态分配内存,并且分配的内存大小应该大于结构体的大小,以适应柔性数组的预期大小
  4. 好处
    方便内存释放
    有利于访问速度
  5. 两种形式的定义(以第二种常见,因为第一种方式可能编译器不支持)
    ① 用带有零下标的方式
    typedef struct tagData {
    	int key;
    	int flexiableArray[0];
    } DATA_S;
    
    没有柔性数组下标的形式
    typedef struct tagData {
    	int key;
    	int flexiableArray[];
    } DATA_S;
    

说明

注③:如果不用malloc 来进行分配,如果禁用静态数组的方式进行分配,结果如下图。
在这里插入图片描述

练习

  1. 写一个结构体变量创建函数,用于创建一个带有柔性数组成员变量的结构体变量
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值