上次学习我们了解到了构造数据类型的结构体本次学习继续围绕构造数据类型剩下部分、位运算与程序内存管理三大模块展开这些内容是C语言区别于高级语言的底层特性也是嵌入式开发、底层编程的基础核心。一、构造数据类型结构体与共用体结构体struct是C语言中用来组合不同数据类型的自定义类型结构体中的每个成员都会占用独立的内存空间整体内存大小受内存对齐规则影响常用来管理一组关联数据比如学生信息、设备参数等。共用体union也叫联合体和结构体不同它的所有成员共用同一块内存空间整体内存大小由占用空间最大的成员决定。利用共用体的内存特性给共用体的字符成员赋值1读取整型成员的数值即可判断当前内存的字节存储顺序。大小端模式小端模式内存低地址存放数据的低位字节高地址存放高位字节大端模式内存低地址存放数据的高位字节高地址存放低位字节。枚举类型enum枚举用于给一组整型常量赋予可读性强的名称所有枚举常量的底层类型均为int。默认情况下第一个枚举常量值为0后续枚举常量的值依次在前一个基础上加1。使用枚举替代固定的数字能大幅提升代码可读性在分支判断、状态标识场景中应用广泛。二、位运算位运算是直接对变量的二进制位进行操作的运算方式执行效率远高于普通算术运算是底层寄存器操作、硬件开发的必备技能。常用位运算符C语言提供6种基础位运算符按位与、按位或|、按位异或^、按位取反~、左移、右移。位运算将变量第n位置1利用按位或运算执行语句 num | (1 n);将变量第n位清零利用按位与运算执行语句 num ~(1 n);无需临时变量交换两个整数借助异或运算的特性通过三行代码 a a ^ b; b a ^ b; a a ^ b; 完成数值交换移位运算可快速实现乘除2的幂次运算左移一位等价于数值乘以2右移一位等价于数值除以2。三、C语言程序内存分布C语言程序运行时内存会被划分为多个功能区域由操作系统和程序员共同管理从低地址到高地址主要分为以下几个部分文本区.text存放程序编译后的机器指令、函数代码该区域为只读属性防止程序指令被恶意修改数据区包含初始化全局变量、静态变量的.data段以及未初始化全局变量、静态变量的.bss段变量在程序运行前就完成内存分配堆区heap由程序员手动管理通过malloc函数申请内存free函数释放内存若申请的内存未及时释放会造成内存泄漏栈区stack存放函数局部变量、函数形参、函数返回地址由系统自动分配与回收函数执行结束后栈空间自动释放局部变量随之失效。理解内存分区的规则能够清晰区分变量的生命周期、作用域有效规避野指针、内存越界、内存泄漏等常见编程问题。本次学习的知识点覆盖了C语言自定义类型、底层位操作、内存管理三大核心板块这些内容脱离了表层的语法使用深入到程序运行的底层逻辑。掌握这些知识不仅能规范代码编写习惯也能为后续嵌入式开发、驱动开发等进阶学习打下坚实的基础。