结构体,共用体,枚举,位运算

d8fa842676c9461898a2fce49c2861b7.png

1.结构体的存储
    struct date 
    {
        char a;
        int year;
        int mon;
        int day;
    }
   结果:空间大小为16个字节
内存对齐
        1.存放结构体成员变量,必须保证前面的长度为成员变量所占空间大小的整数倍
        2.结构体整体的大小必须为最大类型长度的整数倍

例:struct s{

        int a;           //占4个字节,空4个字节

        double b;    //占8个字节

        char c;       //占1个字节,空7个字节

};

sizeof(s)的结果为24;

2.结构体传参
    struct date GetDate(void); //返回一个结构体类型
    int PutDate(struct date d);//传参传的是结构体类型,访问用‘.’
    int GetDateByPoint(struct date *pd);//传参传的是结构体指针类型(&d),访问用‘->’
    int PutDateByPoint(struct date *pd);

c48a079804e04dfca0af0c4cee8b1d83.png

3.结构体数组
    int PutAllStuInfo(struct student *pstu, int len);//传参传的是结构体数组的数组名(s),访问用stu[i].name这种类型

3bdc8ad2753b40d581c0d86908c0966c.png

4.共用体
    也称为联合体,共用一个空间,空间大小为最大数据类型的长度
测试一个硬件平台是大端平台?小端平台?
    1.小端:内存低地址存放低数据位称为内存小端
    2.大端:内存低地址存放高数据位称为内存大端    

b38ef9b1697e4b7d945a0df089a3ff12.png

5.枚举类型
    1.枚举常量第一个值默认为0,后面的枚举常量为前一个枚举常量的值+1 
    2.枚举类型对应的变量的值应该为枚举常量中的值之一
    3.枚举常量可以让代码提高可读性

c2363010ebf748979659bea8ba6da9a5.png



863977fbdc184231a19d262934d9c2d5.png 

1.位运算
     &      按位与
     |      按位或
     ^      按位异或        相同为0  相异为1 
     ~      按位取反
     <<     左移            
     >>     右移            让数据缩小   num /= 2 ^ n
     & 0得0 
     | 1置1 
   1. 不改变其余位的前提下,让第n位置1
    num = num | (1 << n);
    2.不改变其余位的前提下,让第n位置0
    num = num & (~(1 << n));

    3.^可以实现两个数的交换(a ^ 0 = =a , a ^ a == 0)

a = a ^ b;   

b = a ^b;  //b = (a ^ b) ^ b = a

a = a^b    //a = (a ^ b) ^ (a) = b

2.运算符优先级
    括号 > 单目 > 双目 > 三目 > 赋值 > 逗号 
    双目:
        算数 > 移位 > 关系 > 位运算 > 逻辑
 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值