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


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

            语法:

            struct 结构体名

            {

                    结构体成员列表

            };

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

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

     

     局部赋值方式

     结构体数组

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

     语法:

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

     结构体指针

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

    struct 结构体名 *指针名;

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

    指针指向了结构体地址

     ​​​​​​​

     结构体嵌套

     结构体大小

     字节对齐

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

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

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

    结构体大小计算方法

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

            默认对齐:电脑

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

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

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

     ​​​​​​​

     位域

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

    定义并 赋值

     

  • 相关阅读:
    Windows系统中苹果ipa上传到App Store Connect
    ELK Stack日志采集架构详解
    linux进程控制类命令
    ChatGPT调教指南 | 咒语指南 | Prompts提示词教程(二)
    8月8本程序员新书:Rust、软技能、Python、量子...
    校园跑腿小程序还受欢迎不?
    复制东方甄选?顺丰再战直播电商
    智能计量插座多角色定位:用电监测&资产管理的智能化强大运用
    一本书读懂大数据 读书笔记(1)
    Qt编程,TCP编程、数据库
  • 原文地址:https://blog.csdn.net/zhaojiazb/article/details/134533053