欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 学习嵌入式的第十六天----结构体 共用体

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

2024/10/24 18:28:56 来源:https://blog.csdn.net/2402_86456330/article/details/141056276  浏览:    关键词:学习嵌入式的第十六天----结构体 共用体

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

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

怎么描述一个数据类型?

语法:

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.共用体中 成员共用一块空间

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com