柔性数组
柔性数组的大小是未知的,数组大小是可以调整的。结构体中最后一个元素允许是未知大小的数组。
#inclide <stdio.h>
#include <string.h>
#include <errno.h>
typedef struct S
{
int n;
int arr[];//柔性数组成员
//int arr[0];//柔性数组成员
}S;
int main()
{
S *p = NULL;
p = malloc(sizeof(S)+10*sizeof(int));
p->n=10;
for(int i=0;i<10;i++)
{
p->arr[i]=i;
}
for(int i=0;i<10;i++)
{
printf("%d ",p->arr[i]);
}
free(p);
p=NULL;
}
柔性数组特点
- 结构体的柔性数组成员前面必须至少一个其他成员。
- sizeof返回这种结构体大小不包括柔性数组的内存。
- 包含柔性数组的结构用malloc函数进行动态内存分配。
- 方便内存释放。
- 访问速度有所提升,连续空间减少内存碎片。