• 学习嵌入式的第十六天----结构体 共用体


    结构体---用来描述复杂数据的一种数据类型

    构造类型----用户自定义类型

    怎么描述一个数据类型?

    语法:

    struck   结构体名

    {       成员列表;     }  ;

    (1)struct  关键字  -----表示  在构造一个结构体的类型

    (2) 结构体名-----用来描述  结构体这个类型  一个名称

    (3) 成员列表---表示 要描述的复杂数据 中用到的 具体的成员变量

                                 定义的方式  与之前变量的方式相同

                                 多个成员 变量之间 用分号隔开  

    (4)  最后 有一个分号 表示结束

       eg: struct  student

         {

             char  name [ 30 ];

              int    sno  ;

              float  score;

               char   sex;

                                };  ------表示定义出 一个数据类型

    定义变量

    定义指针变量

    定义数组

    注意:

    1.结构体类型的使用的过程

       a.先定义出类型

       b.定义变量

    2.定义变量  

        struct  结构体名  变量名;  ------结构体类型

    结构体初始化

    struct student s={ };

    初始化 ----看每个成员变量,具体是什么数据类型;

                      根据各个成员变量 自身的数据类型 进行初始化

                     初始化的顺序 按照定义的顺序  依次初始化

    结构体变量的引用:

    结构体数据  引用时  一般是引用到具体的成员数据

    引用成员数据-----结构体运算符号( . )

    使用: 

    结构体变量名  .  成员名    -----表示访问到  某个结构体的 成员

    ->  指向结构体成员 运算符

    结构体指针运算符

    结构体类型的定义形式:

    struct  demo

    {         };

    struct  demo  d;

    --------形式1  先定义类型 然后定义变量

    struct  demo

    {       }d;

    ----------形式2  定义类型的同时  定义变量

    struct 

    {       }d;

    形式3   定义类型的同时,定义变量 可以省略结构体名

    结构体类型的大小:

    1.在32位的平台上,默认都是按4字节对齐的

    2.对于成员变量

     各自在自己的自然边界对齐

    char ---1字节

    short ---2字节

    int  -----4字节

    3.如果 成员变量有比4字节大的  

       此时 按照4字节对齐

    4. 如果没有比四字节大的  

        整个结构体 按照最大的成员对齐

    注意:

    32位的平台   
     如果有超过4字节 ,按照4字节对齐
     如果没有超过4字节的,则按成员变量中最大对齐 

    64位的平台
      如果超过4字节的,按超过的最大的成员变量对齐 
      如果没有超过4字节的,则按成员变量中最大对齐

    同类型的结构体变量之间  可以相互赋值

    struct  students s1;

    struct  students s2;

    s2=s1

    qsort()---排序数组

    void qsort(

    void *base,-------要排序的数组的首地址

    size_t nmemb,------数组元素的个数

    size_t  size  ,  ------单个元素的大小

    int (*compar)(const  void *,  const  void *) -----比较函数---提供比较依据

    );

    int (*compar)(const  void *a,  const  void *b)

    {       比较函数   形参a和b用来接收 要比较的两个数组元素

                                }

               

    总结:

    1.理解结构体概念及用途

    2.使用方法

       a.自己构造出这个结构体类型

       b.有了类型-----定义变量  定义数组  定义指针 

                              做函数形参  做函数返回值(结构体类型指针)

    考点:

    结构体类型的大小计算

    内存对齐

    为什么要内存对齐-----提高效率

    共用体:union  

    语法:

    union  共用体名

    {         成员变量;        };

    特点:共用了一块内存空间

               共用了最大成员的内存空间

    注意:

    1.共用体初始化时,只能给一个值,默认时给到第一个成员的

    2.共用体变量中的值,取决于最后一次给到的值  还要看能影响几个字节

    对比 结构体

    1.结构体中各个成员  拥有自己独立空间

    2.共用体中 成员共用一块空间

  • 相关阅读:
    leetcode724. 寻找数组的中心下标
    【性能测试】Jmeter插件之ServerAgent服务器性能监控工具的安装和使用
    BIO、NIO、AIO有什么区别
    刷代码随想录有感(46):平衡二叉树
    【office办公-pdf篇】pdf合并与拆分让我们摆脱付费软件的功能限制好不好
    【Phoenix】在Kerberos认证下使用JDBC连接Phoenix 和 Phoenix各数据类型测试表创建
    神经网络是一种算法吗,神经网络包括哪些算法
    数学建模之遗传算法
    SpringBoot+Vue项目在线小说阅读平台
    QTday3
  • 原文地址:https://blog.csdn.net/2402_86456330/article/details/141056276