本篇核心知识联合union、枚举enum、文件操作FILE、读写一、联合union概念联合是复合数据类型多个成员共享同一块内存同一时间只能用一个成员。特性定义格式与结构体类似union 联合名 { 类型1 成员1; 类型2 成员2; };内存特点所有成员共用首地址同一时间仅一个成员有效。总大小 最大成员的字节数内存复用。初始化用{}初始化第一个成员。使用场景节省内存、类型转换、多状态复用。代码示例union Data { int num; char ch; float f; }; int main() { Data d; d.num 10; cout d.num endl; // 10 d.ch A; cout d.ch endl; // Anum值被覆盖 return 0; }相似概念比较联合 vs 结构体结构体成员独立内存总大小 各成员之和 对齐填充。联合成员共享内存总大小 最大成员大小。二、枚举enum概念枚举是自定义常量集合用名字表示固定整数提高代码可读性。特性定义格式enum 枚举名 { 常量1, // 默认从0开始 常量2 6, 常量3 // 自动17 };默认值首常量默认0后续依次1可手动指定值。本质枚举常量是int 型常量占 4 字节。使用场景状态标记、选项控制、游戏类型 / 角色状态。代码示例// 定义怪物类型 enum MonsterType { SLIME, // 0 GOBLIN 10, ORC, // 11 BOSS 100 }; int main() { MonsterType m SLIME; cout m endl; // 0 m BOSS; cout m endl; // 100 return 0; }三、文件操作C 语言概念通过FILE类型指针实现文件打开、读写、关闭用于数据持久化。特性1. 核心要素FILE*文件指针指向文件信息区。头文件stdio.h。2. 文件打开fopen/fopen_s格式FILE* fopen(文件名, 打开方式);常用方式w写模式不存在则创建存在则清空。r读模式不存在则失败。wb/rb二进制读写速度快、不可读。安全版VS 用fopen_s(文件指针, 文件名, 方式);。3. 文件关闭fclose格式int fclose(FILE*);作用释放资源必须操作。4. 文件写fwrite格式size_t fwrite(数据地址, 单个大小, 个数, 文件指针);5. 文件读fread格式size_t fread(缓冲区地址, 单个大小, 个数, 文件指针);代码示例#include stdio.h int main() { FILE* fp fopen(test.txt, w); if (!fp) return 1; // 写数据 char str[] hello; fwrite(str, sizeof(char), 5, fp); fclose(fp); // 读数据 char buf[10] {0}; fp fopen(test.txt, r); fread(buf, sizeof(char), 5, fp); fclose(fp); printf(%s\n, buf); // hello return 0; }
C/C++ 基础笔记(九)
本篇核心知识联合union、枚举enum、文件操作FILE、读写一、联合union概念联合是复合数据类型多个成员共享同一块内存同一时间只能用一个成员。特性定义格式与结构体类似union 联合名 { 类型1 成员1; 类型2 成员2; };内存特点所有成员共用首地址同一时间仅一个成员有效。总大小 最大成员的字节数内存复用。初始化用{}初始化第一个成员。使用场景节省内存、类型转换、多状态复用。代码示例union Data { int num; char ch; float f; }; int main() { Data d; d.num 10; cout d.num endl; // 10 d.ch A; cout d.ch endl; // Anum值被覆盖 return 0; }相似概念比较联合 vs 结构体结构体成员独立内存总大小 各成员之和 对齐填充。联合成员共享内存总大小 最大成员大小。二、枚举enum概念枚举是自定义常量集合用名字表示固定整数提高代码可读性。特性定义格式enum 枚举名 { 常量1, // 默认从0开始 常量2 6, 常量3 // 自动17 };默认值首常量默认0后续依次1可手动指定值。本质枚举常量是int 型常量占 4 字节。使用场景状态标记、选项控制、游戏类型 / 角色状态。代码示例// 定义怪物类型 enum MonsterType { SLIME, // 0 GOBLIN 10, ORC, // 11 BOSS 100 }; int main() { MonsterType m SLIME; cout m endl; // 0 m BOSS; cout m endl; // 100 return 0; }三、文件操作C 语言概念通过FILE类型指针实现文件打开、读写、关闭用于数据持久化。特性1. 核心要素FILE*文件指针指向文件信息区。头文件stdio.h。2. 文件打开fopen/fopen_s格式FILE* fopen(文件名, 打开方式);常用方式w写模式不存在则创建存在则清空。r读模式不存在则失败。wb/rb二进制读写速度快、不可读。安全版VS 用fopen_s(文件指针, 文件名, 方式);。3. 文件关闭fclose格式int fclose(FILE*);作用释放资源必须操作。4. 文件写fwrite格式size_t fwrite(数据地址, 单个大小, 个数, 文件指针);5. 文件读fread格式size_t fread(缓冲区地址, 单个大小, 个数, 文件指针);代码示例#include stdio.h int main() { FILE* fp fopen(test.txt, w); if (!fp) return 1; // 写数据 char str[] hello; fwrite(str, sizeof(char), 5, fp); fclose(fp); // 读数据 char buf[10] {0}; fp fopen(test.txt, r); fread(buf, sizeof(char), 5, fp); fclose(fp); printf(%s\n, buf); // hello return 0; }