1、柔性数组介绍
柔性数组是指数组内的的元素个数是未知的,通常出现在C99环境下的结构体当中。
在 C99 中,结构中的最后⼀个元素是未知⼤⼩的数组,这就叫做『柔性数组』成员。
形如:
typedef struct st_type
{
int i;
int a[];//柔性数组成员
}type_a;
2、柔性数组的特点
1.结构中的柔性数组成员前⾯必须⾄少⼀个其他成员。
2.sizeof 返回的这种结构体⼤⼩不包括柔性数组的内存。
3.包含柔性数组成员的结构⽤malloc ()函数进⾏内存的动态分配,并且分配的内存应该⼤于结构的⼤⼩,以适应柔性数组的预期⼤⼩。
例如:
typedef struct st_type
{
int i;
int a[0];//柔性数组成员
}type_a;
int main()
{
int n = 0;
type_a *p = (type_a*)malloc(sizeof(type_a)+100*sizeof(int));
//柔性数组获得了一百个整型变量的空间。
p->i = 100;
for(n=0; n<100; n++)
{
p->a[n] = n;
}
free(p);
return 0;
}
3、结语
十分感谢您观看我的原创文章。
本文主要用于个人学习和知识分享,学习路漫漫,如有错误,感谢指正。
如需引用,注明地址。