柔性数组的使用
2016-06-12 15:14
267 查看
#include <stdio.h> #include <malloc.h> typedef struct _soft_array { int len; int a[]; }SoftArray; int main(void) { int i = 0; printf("sizeof(SoftArray) = %d\n",sizeof(SoftArray)); //sizeof(len) = 4;a[]只起到占位符的作用 SoftArray* array = (SoftArray*)malloc(sizeof(SoftArray)+sizeof(int)*10); array->len = 10; for(i=0;i<array->len;i++) { array->a[i] = i+ 1; } for(i=0;i<10;i++) { printf("array->a[%d] = %d\n",i,array->a[i]); } printf("--end--\n"); return 0; }
举例使用:
//斐波那契数列的使用 #include <stdio.h> #include <malloc.h> typedef struct _soft_array { int len; int a[]; }SoftArray; SoftArray* createArray(int size) { printf("create array...\n"); SoftArray* ret = NULL; if(size > 0) { ret = (SoftArray*)malloc(sizeof(*ret) + size * sizeof(*(ret->a))); //ret = (SoftArray*)malloc(sizeof(SoftArray) + size * sizeof(int)); //与上面等价 ret->len = size; } return ret; } void fibonacci(SoftArray* sa) { printf("create fibonacci array...\n"); int i = 2; if(sa != NULL) { if(sa->len == 1) { sa->a[0] = 1; } else { sa->a[0] = 1; sa->a[1] = 1; for(i=2;i<sa->len;i++) { sa->a[i] = sa->a[i-1] + sa->a[i-2]; } } } } void deleteArray(SoftArray* sa) { printf("free array...\n"); free(sa); } int main(void) { int i = 0; printf("sizeof(SoftArray) = %d\n",sizeof(SoftArray)); //sizeof(len) = 4;a[]只起到占位符的作用 SoftArray* array = createArray(10); fibonacci(array); printf("len = %d\n",array->len); for(i=0;i<array->len;i++) { printf("%d\n",array->a[i]); } deleteArray(array); printf("--end--\n"); return 0; }
相关文章推荐
- View的requestDisallowInterceptTouchEvent对事件的影响
- DERemede玫瑰精油氨基酸滋养洗面奶怎么样,去角质效果好 ...
- react native的一些基本概念
- strchr
- 学习js笔记二(Math)
- RT5350 openwrt将ttyS1修改为控制端口,ttyS0为普通串口
- Sort a Map<Key, Value> by values (Java)
- ignite中的sql查询
- PHPExcel读取excel文件示例
- maven+spring+springMVC+mybatis+dubbox
- qt creator 源代码中含有中文编译报错
- 在Ubutu14.04的Eclipse启动Tomcat的问题
- adb批量安装apk(支持中文名字apk)
- 不良资产处置(一):不良资产处置的方式有哪些?
- printf输出格式总结
- Mysql配置文件中设置字符集编码
- 单链表
- Linux下非root用户安装配置jdk1.8 tar.gz
- memset
- 剑指Offer—编程题28(字符串的排列)