结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组(flexible array)成员(也叫伸缩性数组成员),但结构中的柔性数组成员前面必须至少一个其他成员。柔性数组成员允许结构中包含一个大小可变的数组。柔性数组成员只作为一个符号地址存在,而且必须是结构体的最后一个成员,sizeof返回的这种结构大小不包括柔性数组的内存。柔性数组成员不仅可以用于字符数组,还可以是元素为其它类型的数组。包含柔性数组成员的结构用malloc()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。
形如:

typedef struct var_array{            int i;      char data[];}Var_a

需要说明的是:C89不支持这种东西,C99把它作为一种特例加入了标准。但是,C99所支持的是incomplete type,而不是zero array,形同int a[0];这种形式是非法的,C99 支持的形式是形同int a[];只不过有些编译器把int a[0];作为非标准扩展来支持,而且在C99 发布之前已经有了这种非标准扩展了,C99 发布之后,有些编译器把两者合而为一了。

©著作权归作者所有:来自51CTO博客作者wx5cb188ffabeef的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 剑指offer(一):找出数组中重复的数字
  2. 《PHP环境搭建-基础语法及数据类型》
  3. C语言数组(下)
  4. php数据类型
  5. PHP 数据类型的转换与检测|变量声明方式与使用|常量声明的方式与
  6. C语言的数组(上)
  7. php学习小结(php程序的运行原理、短标签的使用与html混编、常用数
  8. php的初步认识
  9. Android(安卓)解析json对象,存放到List中

随机推荐

  1. 使用线程更新UI
  2. android中singleTask的home键的问题
  3. Android搭建opencv环境(超详细)
  4. 解决eclipse中执行程序提示“Your projec
  5. Android(安卓)Studio中Gradle的Daemon
  6. Android界面显示_视图Choreographer控制
  7. android设备与蓝牙模块之间交互(蓝牙命令,
  8. Android快捷便利但不常被使用的原生工具
  9. Android(安卓)2D游戏引擎1
  10. Android魔法(第三弹)—— 一步步实现对折页