尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

共用体、枚举、位运算、内存管理

共用体、枚举、位运算、内存管理 C语言进阶知识点总结目录一、结构体、共用体、枚举一结构体与共用体区别二内存大小端模式三枚举 enum二、位运算1、C全部运算符分类2、位运算符针对二进制比特位运算3、位运算经典实操公式三、C语言内存分区管理1、五大内存分区自上而下分布2、堆区核心要点一、结构体、共用体、枚举一结构体与共用体区别结构体结构体的每一个成员变量都会单独占用独立的内存空间结构体整体占用内存大小由所有成员所占内存之和内存对齐规则下决定。共用体联合体共用体内所有成员共享同一块内存空间任一时刻只有一个成员有效共用体整体内存大小等于占用空间最大的那个成员的大小。二内存大小端模式小端模式内存低地址存放数据低位字节内存高地址存放数据高位字节PC、x86架构普遍为小端。大端模式内存低地址存放数据高位字节内存高地址存放数据低位字节嵌入式设备、网络传输常用大端。三枚举 enum枚举里的每一个枚举常量本质类型均为int整型。赋值规则第一个枚举常量默认数值为 0后面枚举常量默认在前一个常量数值基础上 1也可手动给某个枚举常量赋值后续常量依旧依次自增1。enumweekday{MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY,};二、位运算1、C全部运算符分类算数运算符、关系运算符、逻辑运算符、赋值运算符、特殊运算符、逗号运算符、sizeof运算符、位运算符。2、位运算符针对二进制比特位运算按位与两位同时为1结果才是1否则为0特性和0相与置0和1相与保持原位不变。|按位或任意一位为1结果就是1特性和1相或置1和0相或保持原位不变。^按位异或两位相同为0两位不同为1相同数字异或结果为0任意数字和0异或等于自身。~按位取反所有二进制位0变1、1变0。左移高位舍弃低位补0等价乘以2。右移正数高位补0负数高位补符号位等价除以2。3、位运算经典实操公式将变量 num 的第 n 位设置为 1num|(1n);将变量 num 的第 n 位设置为 0num~(1n);利用异或不借助第三方变量交换两个整数 a、baa^b;ba^b;aa^b;三、C语言内存分区管理1、五大内存分区自上而下分布内核区域操作系统管控区域应用程序无法访问。栈区stack由操作系统自动分配、自动回收。存放内容局部变量、函数形参、函数返回地址。特点局部变量未初始化时值为随机垃圾值函数执行到变量定义处开辟空间离开作用域自动回收空间。堆区heap由程序员手动申请、手动释放。依靠malloc/calloc/realloc申请内存依靠free释放内存。注意堆内存使用完毕不调用 free 释放会造成内存泄漏。数据区.data段存放已经初始化的全局变量、静态局部变量.bss段存放未初始化的全局变量、静态变量程序运行前自动初始化为0.rodata常量区存放字符串常量、const修饰的常量只读不可修改。数据区在编译阶段分配内存程序结束后由系统回收。文本段.text存放程序二进制代码、函数指令只读。2、堆区核心要点堆内存必须手动 malloc 开辟、free 释放。只 malloc 不 free 会发生内存泄漏多次 free 同一块堆内存会造成程序崩溃。
返回列表