目录
1.柔性数组
2.柔性数组的特点
3.柔性数组的使用
1.柔性数组
柔性数组存在于结构体中,当结构体最后一个成员元素为一个未知大小的数组,则称其为柔性数组。
struct s
{
int a;
char arr[];//柔性数组
};
2.柔性数组的特点
1. 结构中的柔性数组成员前面必须至少一个其他成员。
2.sizeof 返回的这种结构体大小不包括柔性数组的内存。
3.包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小
struct s
{
int a;
char arr[];
};
int main()
{
printf("%d", sizeof(struct s));
return 0;
}
打印结果
3.柔性数组的使用
struct s
{
int a;
char arr[];
};
int main()
{
struct s* p = malloc(sizeof(struct s) + 10 * sizeof(int));//开辟空间
for (int i = 0; i < 10; i++)//赋值给柔性数组成员arr
{
p->arr[i] = 'a';
}
free(p);//释放空间
return 0;
}