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

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

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

怎么描述一个数据类型?

语法:

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

  • 23
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值