柔性数组

来源:互联网 发布:信访数据统计分析报告 编辑:程序博客网 时间:2024/05/11 09:28

 

c99中

 

 结构中的最后一个元素允许是未知大小的数组 这就叫做柔性数组成员。

 

但结构中的柔性数组前面必须至少一个其他 成员,柔性数组成员允许结构中包含一个大小可变的数组.

 

sizeof返回的这种结构大小不包括柔性数组的内存.

 

包含柔数组成员的结构用malloc函数进行内存的动态分配,且分配的内存应该大于结构的大小 以适应柔性数组的预期大小.

 

 柔性数组到底如何使用:例子:

 

typedef struct st_type

 

{

 

int i; int a[0];

 

}type_a;

 

有些编译器报错无法编译可改成:

 

typedef struct st_type

 

{

 

int i; int a[];

 

}type_a;

 

但是计算大小的时候,int a[]是作为一个指针来计算的,也就是说,

 

my_type_a = (type_a *)malloc(sizeof(type_a) + 100* sizeof(int));

 

长度仅仅算8,(在32位PC系统上)后面的数组的长度,是不计算在内的。

原创粉丝点击