结构体、共用体、枚举 、位运算2024.02.20

结构体

1.结构体的概念

描述一些 用基本类型不太好描述的复杂类型

2.语法

struct  结构体类型名

{

        成员变量

};

//定义了一个 数据类型------自己造出来的

3.结构体类型定义的形式:


1.先定义类型,后定义变量
struct student 
{
 ...
};

struct student s; 

2.定义类型的同时,定义变量 

struct student 
{
 ...
}s;

3.定义类型的同时,定义变量 ,类型名可以省略   --- 如果该类型,只使用一次 

struct 
{
 ...
}s;

4.数据类型:

定义变量

定义数组 

定义指针

做函数形参

5.结构体的大小:

结构体的对齐问题(内存对齐)

结构体的对齐规则:(在32位平台上)

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

2.对于成员变量,各自在自己的自然边界上对齐

3.如果 成员变量中有比四字节大,此时,整个结构体按照4字节对齐     //64位超过4字节,以8字节对齐

4.如果 成员变量中没有比4字节大, 此时,整个结构体按照最大的那个成员对齐。

32位     尽可能读32位,四个字节

28个字节

共用体

union

共用体作用:

1.节省空间   嵌入式开发环境 (资源有限)

        a.运行空间  ----内存条

        b.存储的空间----硬盘

2.实现数据的转换

语法:

        union 共用体类型名

        {

                成员变量名;

        };    //定义了一个共用体类型

注意:

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

2.各个成员起始位置相同

取决于最后一次给到的值,以及最后一次能影响到的字节数

判断电脑大小端

 #include<stdio.h>
  union demo
  {
      int b;
      char a;
  }d = {1};
  int isLittle(void)
  {
      return d.a;
  }
  int main(void)
  {
  
      printf("%d\n",isLittle());
      return 0;
  } 

枚举

enum

用途:

提高代码的可读性

使用:

将一些相关的常量集合在一起,成为一个枚举类型

语法:

enum  枚举类型名

{

        枚举常量名1,               //如果不给定值,从0开始递增    

        枚举常量名2,

        .....

};

枚举优点

1.提高代码的可读性

2.有了类型,语法检查更严格

注意:枚举类型 本质上 是通过int 类型实现的

typedef关键字

作用:不是定义类型,而是 给已有类型起别名   

可以给任意类型起别名


位运算

对二进制位上的数据进行运算

运算:

1.&    -------按位与运算 ----运算规则  一假则假

2.|      --------按位或运算  ----------------一真则真

3.~     --------按位取反 ----------------真假相对

4.^      异或          相同为0 不同为1

5.<<    左移

6.>>     右移

用途:

1.控制某些二进制位

             控制硬件   编程 --相关寄存器中对应的位---01变化----影响到对应的引脚上高低电平的变化

操作硬件:

左移

操作数1<<操作数2

将操作数1 左移 操作数2 这么多位

清零 & 运算

置一 | 运算

右移

操作数1 >> 操作数2

逻辑右移  

            操作数1    ---- 是一个无符号数   - -----高位补 0

算数右移

             操作数1 ------------有符号数  ----------高位补符号位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值