• Linux操作系统使用及C高级编程-D11-D13结构体


            由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员”,其描述了一块内存空间的大小及解释意义。

            语法:

            struct 结构体名

            {

                    结构体成员列表

            };

            下图是struct的定义和使用方法,其中20行这种赋值方式错误,因为字符串是常量,只能在定义时就进行赋值,不能在后面赋值了,赋值是通过19行​​​​​​​

    当然也可以直接定义时就进行赋值 

     

     局部赋值方式

     结构体数组

    将自定义的结构体放入到数组中方便维护

     语法:

            struct 结构体名 数组名[元素个数] = {{},{},......{}}

     结构体指针

            通过指针访问结构体中的成员

    struct 结构体名 *指针名;

            利用操作符->可以通过结构体指针访问结构体属性

    指针指向了结构体地址

     ​​​​​​​

     结构体嵌套

     结构体大小

     字节对齐

            针对结构体而言,通常编译器会自动对其成员变量进行对齐,以提高数据存取效率

            1、移植原因:不是所有的硬件平台都能访问任意地址上的任意数据;某些硬件平台只能在某些地方处取某些特定类型的数据,否则抛出硬件异常

            2、数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因是,为了访问未对齐地内存,处理器需要作两次内存访问;而对齐地内存访问仅需要一次访问。

    结构体大小计算方法

            自身对齐:数据类型本身大小

            默认对齐:电脑

            有效对齐:结构体最终以多少字节对齐(取自身和默认的最小值)

                    地址要能够整除有效对齐,所以导致了会浪费一些地址

     下面左图是struct A,右图是struct C

     ​​​​​​​

     位域

            是把一个字节中的二进制位分为几个不同区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同对象用一个字节的二进制位域来表示

    定义并 赋值

     

  • 相关阅读:
    seatunnel win idea 本地调试
    BI佐罗,居然抄袭洗稿我的文章
    【790. 多米诺和托米诺平铺】
    CRM系统化整合从N-1做减法实践
    Python环境搭建(Python、 Pycharm安装/pycharm创建python虚拟环境Virtualenv)基础
    解决apt update执行时因签名而运行失败的问题
    BasePopup - Android下打造通用便捷的PopupWindow弹窗库
    Python算法题2023 输出123456789到98765432中完全不包含2023的数有多少
    【Rust日报】2022-09-11 Shuttle 创建和部署带有Shuttle&Serenity的 Discord 机器人!
    浅析数据迁移工具Sqoop
  • 原文地址:https://blog.csdn.net/zhaojiazb/article/details/134533053