C 柔性数组

什么是柔性别数组

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

例如

typedef struct st_type
{
    int i;
    int a[0]//柔性数组成员可以调整数组大小
}type_a;

使用方法

struct S
{
    int n;
    int arr[];
    

};
int  main()
{
    struct S* ps = (struct S*)malloc(sizeof(struct S) + 5 * sizeof(int));
    ps->n = 100;

    for (size_t i = 0; i < 5; i++)
    {
        ps->arr[i] = i;
        printf("%d", ps->arr[i]);
    }
    free(ps);
    ps = NULL;
    return 0;
}

值得注意的是声明的ps大小只有4个字节也就是说arr不占空间 通过malloc 动态分配内存

struct S
{
    int n;
    int arr[];
    

};
printf("%d",sizeof(type_a))//大小是4

有2个好处:提高访问速度,方便内存释放

 

posted @ 2021-04-15 16:00  紅人  阅读(80)  评论(0编辑  收藏  举报