目录
柔性数组的定义
C99中,允许结构的最后一个元素是未知大小的数组,这个叫做柔性数组成员
柔性数组的创建
struct s
{
int n;
int arr[]; //大小未知
};
或
struct s
{
int n;
int arr[0];//大小未知
};
具体最后一个成员是用arr[]还是arr[0]取决去编译器可以使用哪个
柔性数组的使用
struct S1
{
int a;
int arr[];
};
int main()
{
struct S1* p = (struct S1*)malloc(sizeof(struct S1) + 40);
//给柔性数组赋予空间,空间大小是数组大小加想要给arr的大小
return 0;
}
柔性数组的特点
1、柔性数组前面必须有成员
2、sizeof返回不包括柔型数组大小
3、用malloc分配,创建的大小大于结构体的
4、sizeof计算的时候,不计算柔型数组的大小
柔性数组的优势
1、方便释放
2、创造过程中不会产生数据碎片,不会造成造成浪费,并且会提高访问速度