C语言中 结构体末尾如果是定义的数组,那么这个数组只是一个标识符 并不占用结构体大小。
我们可以在结构体中定义一个length 和一个 int* array 让其成为一个柔性数组(可以动态指定大小的数组);
直接上代码
#include <stdio.h>
#include <malloc.h>
typedef struct SoftArray
{
int size;
int Array[];
}softarray;
softarray* createSoftArray(int len)
{
softarray* array = (softarray*)malloc( sizeof(softarray) + sizeof(int)*len );
array->size = len;
return array;
}
int main()
{
softarray* array = createSoftArray(10);
int i = 0;
for (i = 0; i < array->size; i++)
{
array->Array[i] = i;
}
for (i = 0; i < array->size; i++)
{
printf("array->Array[i] = %d \n",array->Array[i]);
}
getchar();
return 0;
}
网友评论