嵌入式学习Day14

本文介绍了C语言中的共用体、内存大小端、枚举类型、位运算、内存管理(malloc和free)以及链表的特点和操作。重点讲解了数据结构的共享与独立性,内存分配与释放,以及链表的高效插入和删除特性。
摘要由CSDN通过智能技术生成

1.共用体定义

        union 公用名{

                数据类型1 成员变量1;

                数据类型2 成员变量2;

                ..

        };

        注:

        1.结构体每个成员变量空间独立

        2.共用体每个成员变量空间共享

2.内存大小端

        内存小端:内存低地址存放低数据位,内存高地址存放高数据位;

        内存大端:内存低地址存放高数据位,内存高地址存放低数据位。

3.枚举类型

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

        注:

        1.枚举变量的值在枚举常量中选择其一作为它的值;

        2.枚举常量默认为int类型,第一个枚举常量的值默认为0,后续枚举常量的值为前一个枚举常量加1。

4.位运算

        &       按位与

        |       按位或

        ^       按位异或           相同为0,相异为1 

        ~       按位取反

        >>      右移               右移n位 = 缩小, 数据 / 2^n

        <<      左移               左移n位 = 放大, 数据 * 2^n 

            与0得0
            或1置1 

            将字节中第n位置1:
                num = num | (1 << n);
    
            将字节中第n位置0:
                num = num & ~(1 << n);

            不使用中间变量实现两个变量值的交换:
                a = a ^ b;
                b = a ^ b;
                a = a ^ b;

5.内存管理

        1.malloc

                功能:

                        申请堆区空间

                参数:

                        size:申请堆区空间的大小

                返回值:

                        成功返回堆区空间首地址

                        失败返回NULL

        2.free

                功能:

                        释放堆区空间

                参数:

                        ptr:堆区空间首地址

                返回值:

                        缺省

        内存溢出:也称为内存越界,操作超过变量范围的空间数据

        内存泄露:malloc申请的空间没有使用free释放

        内存碎片:由于频繁malloc和free小空间,导致大的连续空间由于中间存在小空间被

                        占用而无法得到申请空间的现象称为内存碎片

6.链表

                1.空间不需要连续(访问数据麻烦、空间不需要连续,可以使用小的分散空间)

                2.链表元素可以没有上限

                3.链表插入、删除元素效率高

  • 21
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值