C语言结构体、共用体、枚举与位运算详解

📅 2026/8/6 6:25:34
C语言结构体、共用体、枚举与位运算详解
1. 结构体struct结构体是C语言中用于将不同类型的数据组合成一个整体的复合数据类型。特点每个成员变量占据独立的内存空间结构体的大小等于所有成员大小之和考虑内存对齐成员访问使用点运算符.示例struct student { char name[20]; int age; float score; }; struct student GetStuInfo(void); void PutStuInfo(struct student tmpstu); void PutStuInfoByPoint(struct student *pstu);2. 共用体联合体union共用体是一种特殊的数据类型允许在相同的内存位置存储不同的数据类型。特点所有成员变量共享同一块内存空间共用体的大小等于最大成员的大小同一时刻只能使用其中一个成员内存大小端小端模式Little-endian内存低地址存放数据的低位高地址存放数据的高位大端模式Big-endian内存低地址存放数据的高位高地址存放数据的低位3. 枚举enum枚举是一种用户定义的数据类型用于定义一组命名的整数常量。特点每个枚举常量的类型都为int类型第一个枚举常量的值默认为0后续枚举常量的值总是前面枚举常量的值1示例enum weekday { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY, };4. 位运算4.1 运算符分类算数运算符关系运算符逻辑运算符赋值运算符特殊运算符逗号运算符sizeof运算符4.2 位运算符按位与|按位或^按位异或~按位取反左移右移口诀与0得0或1置14.3 位运算常见操作num | (1 n);num ~(1 n);a a ^ b; b a ^ b; a a ^ b;将变量第n位置1将变量第n位置0异或实现两个变量数值交换5. 内存管理5.1 C语言内存分布C程序的内存通常分为以下几个区域代码区text segment数据区data segmentBSS区bss segment堆区heap栈区stack5.2 堆区操作通过malloc申请堆区空间通过free释放堆区空间注意如果malloc的空间使用完毕没有及时free释放会产生内存泄露