嵌入式工程师day13day14(构造数据类型 )

本文详细介绍了C语言中的基本数据类型、构造数据类型(如结构体、共用体和枚举),包括结构体的定义、成员访问、存储、作为函数参数以及结构体数组。同时涵盖了位运算符的用法,如按位与、或、异或和位操作用于数据交换和设置/清除变量位。
摘要由CSDN通过智能技术生成

 数据类型:

     1.基本数据类型:

            int 
            double 
            char 


     2.构造数据类型:

            1.struct 结构体
            2.union 共用体
            3.enum  枚举

 结构体:

 1.结构体类型的定义

        struct 结构体名 
        {
            数据类型1 成员变量1;
            数据类型2 成员变量2;
            数据类型3 成员变量3;
            ..
        };

 2.结构体变量的定义

        数据类型 变量名;
        数据类型 *指针变量名;

  3.结构体变量的初始化:

     1.全部初始化:

      struct student s = {"zhangsan", 'm', 19, 100};

     2.局部初始化:


        struct student stu = {
                .name = "lisi",
                .score = 90,
            };  

    4.结构体成员变量的访问:

         .   :结构体变量类型访问成员变量使用 .
        ->  :结构体指针类型访问成员变量使用 -> 

    整体类型由成员变量类型决定

  5.结构体的存储:

            内存对齐:
            char   按照1字节对齐
            short  按照2字节对齐
            int    按照4字节对齐
            double 按照4字节对齐

  结构体整体的大小必须为最大基本类型长度的整数倍

6.结构体作为函数参数

           定义一个学生的类型,封装一个函数GetStuInfo获得学生信息放入结构体中,
    再封装一个函数PutStuInfo打印学生信息

 7.结构体数组:

      struct student s[5];

共用体:

    union 共用体名 
    {
        数据类型1 成员变量1;
        数据类型2 成员变量2;
        数据类型3 成员变量3;
        ...
    };

    共用体所有成员变量共享同一片空间

 内存大小端:

       1.内存小端:
            内存低地址存放低数据位
            内存高地址存放高数据位

        2.内存大端:
            内存低地址存放高数据位
            内存高地址存放低数据位

                                                          判断当前硬件的大小

 

                                                                            另一种方法 

 

枚举:

   enum 枚举类型名 
    {
        枚举常量1,
        枚举常量2,
        枚举常量3,
        ..
    };

    1.枚举类型一般说明将来变量的值在给定的常量中选择其一作为它的值
    2.枚举常量的值总是前一个枚举常量的值+1,第一个默认为0值
    3.枚举常量默认为int类型,可以直接在程序中使用

位运算运算符:

   &   按位与
    |   按位或
    ^   按位异或        相同为0 相异为1
    ~   按位取反
    >>  右移            右移n位 等价于 让该数 / 2^n 
    <<  左移            左移n位 等价于 让该数 * 2^n 

    与0得0
    或1置1

    9 & 3
    0000 0000 0000 0000 0000 0000 0000 1001 &
    0000 0000 0000 0000 0000 0000 0000 0011 
    0000 0000 0000 0000 0000 0000 0000 0001

    9 | 3
    0000 0000 0000 0000 0000 0000 0000 1001 |
    0000 0000 0000 0000 0000 0000 0000 0011 
    0000 0000 0000 0000 0000 0000 0000 1011

    9 ^ 3
    0000 0000 0000 0000 0000 0000 0000 1001 ^
    0000 0000 0000 0000 0000 0000 0000 0011 
    0000 0000 0000 0000 0000 0000 0000 1010 

    ~9
    0000 0000 0000 0000 0000 0000 0000 1001
    1111 1111 1111 1111 1111 1111 1111 0110 
     111 1111 1111 1111 1111 1111 1111 0101
     000 0000 0000 0000 0000 0000 0000 1010

    9
    00000000000000000000000000000001

    1 << 3
    00000000000000000000000000000001
    00000000000000000000000000001000

​​​​​​​

 按位异或实现数据交换:
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;



    将变量的第n位置0:
        num = num & ~(1 << n)

    将变量的第n位置1:
        num = num | (1 << n)

​​​​​​​
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值