• 【C】关于柔性数组.简要的谈谈柔性数组


    🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸

    在这里插入图片描述

    今天带来的内容是柔性数组

    🚀什么是柔性数组

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

    struct S
    {
    	int num;
    	double d;
    	int arr[];//柔性数组成员
    }
    
    struct S
    {
    	int num;
    	double d;
    	int arr[0];//数组写成0,大小也是未知的,也是柔型数组
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    🚀柔性数组的特点

    柔性数组特点:
    ~结构中的柔性数组成员前必须至少有一个其他成员。
    ~sizeof()返回的这种结构大小不包括柔性数组的内存
    柔性数组~包含柔性数组的结构用malloc()函数进行内存的动态分配,并且分配的内存应该大于结构体的大小,以适应柔性数组的预期大小,他们在内存上是连续的

    🚀指针能做到为什么非要用柔性数组呢

    用指针也可以做到这种效果,那么为什么会有柔性数组这种方案呢
    比如:

    struct S1
    {
    	int num;
    int arr[];
    	};
    
    • 1
    • 2
    • 3
    • 4
    • 5

    柔性数组,空间上是连续的

    struct S2
    {
    int num;
    int *arr;
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5

    指针来实现,num和arr所指向的空间可能是不连续的
    实现上的细节是有差异的,但是也能达到想要的效果

    🚀柔性数组的优势

    柔性数组的优势:

    第一个好处:方便内存释放
    柔性数组的方案释放一次,指针方案释放两次
    第二个好处:这样有利于访问速度
    由于是连续存放的,连续的内存有益于提高访问速度,也有益于减少内存碎片。
    cpu先去寄存器拿,拿不到再去缓存里去拿,再拿不到再去内存里去拿
    当访问当前数据时,就会把周围的数据加载到寄存器当中去,在内存中存储是连续的话,命中率会高一些


    🚀

           创作不易,提前感谢各位老铁的一键三连,我会和大家一起进步,拿下offer。如果觉得这篇文章有什么帮助的话,👈👇👉点点点。谢谢大家的支持,你的支持就是我前进的动力!!!
    在这里插入图片描述

  • 相关阅读:
    【一天学awk】内置变量的使用
    CNCC2023
    java多线程
    可视化(Visual) SQL初探
    英语学习:D开头
    java毕业设计校园美食评价系统mybatis+源码+调试部署+系统+数据库+lw
    【Linux】学习记录_17_网络编程
    技术分享 | 接口自动化测试之JSON Schema模式该如何使用?
    WordPress优化插件多站点管理软件
    【集群】LVS+Keepalived群集
  • 原文地址:https://blog.csdn.net/zhu_pi_xx/article/details/126108716