一、柔性数组介绍
柔性数组是C99语法中的一个概念,他允许结构体中最后一个成员是未知大小的数组,这就被称为柔性数组。
typedef struct st_type { int i; int a[0];//柔性数组成员 }type_a;
typedef struct st_type { int i; int a[];//柔性数组成员 }type_a;
因为有部分编译器无法编译第一个形式的柔性数组,我们可以第二形式的样子。
二、柔性数组特点
- 结构中的柔性数组成员前面必须至少有一个其他成员;
- sizeof返回的含有柔性数组结构的大小是不包含柔型数组内存的;
- 包含柔性数组成员的结构用malloc()函数进行内存的动态分配,并且分配的内存需要大于结构的大小来适应柔型数组的预期大小。
typedef struct st_type{ int i; int a[0];//柔性数组成员 }type_a; printf("%d\n", sizeof(type_a));//4
三、柔性数组优势
- 内存释放方便(正常情况下进行二次的内存分配后,需要就行两次内存释放。柔性数组很好的解决了这个问题);
- 利于提高访问速度(柔性数组会使空间连续开辟,能够提高访问速度,减少内存碎片)。