相信好多人都没听过这个概念——柔性数组(flexible array),到底什么是柔性数组呢?
【柔性数组的定义】:结构中最后一个元素允许是未知大小的数组,这就是柔性数组。
柔性数组的使用举例:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
typedef struct c
{
int a;
int b[];
}C;
intmain(void)
{
C* p =(C *)malloc(sizeof(C)+10*sizeof(int));
p->a = 0;
for(inti=0;i<10;i++)
{
p->b[i]= i+1;
}
printf("%d\n",sizeof(C));
for(inti=0;i<10;i++)
{
printf("%d\n",p->b[i]);
}
free(p);
return 0;
}
这就是柔性数组的使用方法。可以利用 C* p =(C *)malloc(sizeof(C)+10*sizeof(int));来申请内存空间。利用p->b[i]来访问数组中的元素。