码迷,mamicode.com
首页 > 编程语言 > 详细

C 柔性数组

时间:2021-04-16 11:50:27      阅读:0      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!