news 2026/6/24 2:22:07

C/C++ 基础笔记(九)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C/C++ 基础笔记(九)

本篇核心知识:联合(union)、枚举(enum)、文件操作(FILE、读写)


一、联合(union)

概念

联合是复合数据类型,多个成员共享同一块内存,同一时间只能用一个成员。

特性

  1. 定义格式:与结构体类似

    union 联合名 { 类型1 成员1; 类型2 成员2; };
  2. 内存特点:

    • 所有成员共用首地址,同一时间仅一个成员有效。

    • 总大小 =最大成员的字节数(内存复用)。

  3. 初始化:用{}初始化第一个成员

  4. 使用场景:节省内存、类型转换、多状态复用。

代码示例

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; // A(num值被覆盖) return 0; }

相似概念比较:联合 vs 结构体

  • 结构体:成员独立内存,总大小 = 各成员之和 + 对齐填充。

  • 联合:成员共享内存,总大小 = 最大成员大小。


二、枚举(enum)

概念

枚举是自定义常量集合,用名字表示固定整数,提高代码可读性。

特性

  1. 定义格式:

    enum 枚举名 { 常量1, // 默认从0开始 常量2 = 6, 常量3 // 自动+1,=7 };
  2. 默认值:首常量默认0,后续依次+1;可手动指定值。

  3. 本质:枚举常量是int 型常量,占 4 字节。

  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; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 2:22:06

打通资产数据壁垒,固定资产管理系统实现全流程数字化

多数企业在固定资产管理过程中&#xff0c;长期面临数据分散、信息割裂的问题。各部门资产数据独立存档、线下台账与设备信息脱节、资产流转数据无法同步&#xff0c;形成大量数据孤岛。这类问题不仅造成资产盘点效率低下&#xff0c;还会导致资产归属模糊、维保脱节、闲置浪费…

作者头像 李华
网站建设 2026/6/14 6:45:27

微信小程序调用华为云ModelArts模型保姆级教程(从IAM Token到API调用)

微信小程序无缝集成华为云AI模型实战指南第一次将华为云的强大AI能力嵌入微信小程序时&#xff0c;那种既兴奋又忐忑的心情我至今记忆犹新。作为过来人&#xff0c;我完全理解开发者面对复杂的云服务认证流程时的困惑——明明文档就在眼前&#xff0c;却总在某个意想不到的环节…

作者头像 李华
网站建设 2026/6/13 8:35:56

Papermind(五):选中提问功能的设计与实现

一、需求背景在开发 paperMind 学术论文阅读平台的过程中&#xff0c;我门团队注意到一个问题&#xff1a;如果让用户阅读 PDF 解析后的论文全文时&#xff0c;遇到不理解的段落&#xff08;尤其是公式、方法描述&#xff09;&#xff0c;需要手动复制 → 切换到问答页面 → 粘…

作者头像 李华
网站建设 2026/6/13 11:47:01

Redis 从入门到实战:Python 开发者必备的高性能缓存指南

前言 在当今高并发、大数据量的互联网应用时代&#xff0c;系统性能成为了决定用户体验的关键因素。传统的关系型数据库&#xff08;如 MySQL、PostgreSQL&#xff09;虽然在数据持久化和复杂查询方面表现出色&#xff0c;但在面对每秒数万甚至数十万次的读写请求时&#xff0…

作者头像 李华