C 柔性数组

2021-06-04 03:04

阅读:542

标签:i++   使用   code   size_t   malloc   好处   动态分配   分配   声明   

什么是柔性别数组

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

例如

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个好处:提高访问速度,方便内存释放

 

C 柔性数组

标签:i++   使用   code   size_t   malloc   好处   动态分配   分配   声明   

原文地址:https://www.cnblogs.com/feizianquan/p/14662896.html


评论


亲,登录后才可以留言!