定制手机壳网站,曲阳住房和城乡建设局网站,办公室装修设计怎么设计,浙江省建设厅 网站是多少在C99中#xff0c;结构中的最后一个元素允许是未知大小的数组#xff0c;这就叫做柔性数组成员
限制条件是#xff1a; 结构体中最后一个成员未知大小的数组 1.柔性数组的形式
那么我们怎样写一个柔性数组呢
typedef struct st_type
{int i;int a[0];//柔性数组成员
}ty…在C99中结构中的最后一个元素允许是未知大小的数组这就叫做柔性数组成员
限制条件是 结构体中最后一个成员未知大小的数组 1.柔性数组的形式
那么我们怎样写一个柔性数组呢
typedef struct st_type
{int i;int a[0];//柔性数组成员
}type_a;
有些编译器会报错无法编译可以改成
typedef struct st_type
{int i;int a[];//柔性数组成员
}type_a;
2.柔性数组的特点
结构中的柔性数组成员前面必须至少一个其他成员sizeof返回的这种结构大小不包括柔性数组的内存包含柔性数组成员的结构用malloc()函数进行内存的动态分配并且分配的内存应该大于结构的大小以适应柔性数组的预期大小
例如
typedef struct st_type
{int i;int a[0];//柔性数组成员
}type_a;
printf(%d\n, sizeof(type_a));//输出结果是4 3.柔性数组的优势
第一个好处是方便内存释放
如果我们的代码是在一个给别人用的函数中在里面做了二次内存分配并把整个结构体返回给用户用户调用free可以释放结构体但是用户并不知道这个结构体内的成员也需要free所以我们把结构体的内存及其成员需要的内存一次性分配好并返回给用户一个结构体指针用户做一次free就可以把所有的内存释放掉
第二个好处是有利于访问速度
连续的内存有益于提高访问速度也有益于减少内存碎片