零长度数组与柔性数组
零长度数组(Zero-length array)与柔性数组(Flexible array)
GNU C允许使用零长度数组,它们非常有用。如下是一个零长度数组的应用,零长数组在有固定头部的可变对象上非常有用。
struct line{
int len;
char contents[0]
};
零长数组使用的优缺点:
优点
- 不需要使用指针来分配内存,节约一个指针变量所占内存大小,也使内存申请方式更加便捷;
- 分配的内存连续,管理与释放简单,只需要一次操作。
- 零长数组是GNU C的实现,非标准,因此并不是所有的编译器都支持,有移植风险。
- 柔性数组写成
contents[]
,没有0。 - 柔性数组属于不完整类型,可能
sizeof
操作符不能运用在它上面。作为零长数组原始实现的变体,sizeof
计算结果为0。 - 柔性数组作为成员只能出现在
struct
的最后。 - 一个包含柔性数组成员的结构体或包含这样结构体的联合体,不能成为一个结构体的成员或数组的元素。
推荐阅读
- 日志打卡
- 数组常用方法一
- Java|Java基础——数组
- JS常见数组操作补充
- 八零后也已经老了
- 织网布局,社群营销走进山东玖零落地企业
- 零基础学习Python作业本(13)
- JS|JS 数组求和与数组求平均值
- 超帅的js数组去重
- JavaScript|JavaScript — 初识数组、数组字面量和方法、forEach、数组的遍历