struct{char data[0]}柔性数组
2017-03-29 17:43
211 查看
柔性数组
* 柔性数组即数组大小待定的数组* C语言中结构体的最后一个元素可以是大小未知的数组
* C语言中可以由结构体产生柔性数组
#include <stdio.h> #include <malloc.h> typedef struct _soft_array { int len; int array[]; }SoftArray; int main() { int i = 0; SoftArray* sa = (SoftArray*)malloc(sizeof(SoftArray) + sizeof(int) * 10); sa->len = 10; for(i=0; i<sa->len; i++) { sa->array[i] = i + 1; } for(i=0; i<sa->len; i++) { printf("%d\n", sa->array[i]); } free(sa); return 0; }
柔性数组的结构如何只能堆上生成
柔性数组是C99的扩展,简而言之就是一个在struct结构里的标识占位符(不占结构struct的空间)。
声明
typedef struct zero_array { size_t len; void * array[0]; }zero_array_t;
大小
可以用sizeof 看看其大小
printf("%d\n",sizeof(zero_array_t));//CentOS5.6 32 下输出4
zero_array_t 后面跟着一块len的数组,内存布局有兴趣的同学会画一下。
转载地址:http://www.cnblogs.com/Daniel-G/archive/2012/12/02/2798496.html
相关文章推荐
- C语言变长数组 struct中char data[0]的用法
- C语言变长数组 struct中char data[0]的用法
- [转]C语言变长数组 struct中char data[0]的用法
- C语言变长数组 struct中char data[0]的用法
- C语言变长数组 struct中char data[0]的用法
- C语言变长数组 struct中char data[0]的用法
- C语言变长数组 struct中char data[0]的用法详解
- C语言变长数组 struct中char data[0]的用法
- c语言学习笔记(4)struct和union:柔性数组存储斐波那契数列以及union判断系统大小端
- CString转换到struct中的char数组应注意的事项
- flexible array柔性数组、不定长的数据结构Struct详解
- spoj ORDERSET - Order statistic set Hash+树状数组。附另一种解法,使用了policy based data structrue
- C语言变长数组 struct中char data[0]的用法
- C语言变长数组实现(利用 struct中char data[0] )
- char data[0]在struct末尾的用法
- 树状数组套线段树 <Geometry><Discretize><Data_Struct>
- struct字节对齐+柔性数组问题
- C语言的const,volate,struct,柔性数组
- 柔性数组 data[0]
- 柔性数组成员