自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 C++ 模板初阶:泛型编程的入门指南

cppclass 类模板名 {// 类内成员定义(可使用模板参数T1、T2...)举个常用的例子:通用栈类Stackcpp// 类模板:通用栈template<typename T> // 模板参数T:栈中元素的类型public:// 构造函数:默认容量4// 动态开辟T类型数组_size = 0;// 入栈操作(成员函数声明)private:T* _array;// 指向T类型数组的指针// 栈的容量// 栈的当前元素个数// 类模板成员函数的类外定义(必须加模板声明)

2025-12-16 21:22:50 797

原创 类和对象(中)核心总结:拷贝构造、赋值重载与运算符重载

知识点核心规则拷贝构造资源类需深拷贝,无资源类用默认浅拷贝;参数必须是 const&赋值重载检查自赋值;资源类需深拷贝;返回自身引用支持连续赋值运算符重载复用已有逻辑减少冗余;流运算符必须重载为全局友元;前置 ++ 返回引用,后置返回值日期类核心跨月 / 跨年处理依赖月份天数计算;所有输入 / 初始化需校验日期合法性。

2025-12-09 21:56:47 891

原创 类和对象(中)核心总结:构造函数与析构函数

构造函数负责 “初始化”,通过自动调用机制简化对象创建流程,支持多种初始化方式,对自定义类型成员自动递归初始化;析构函数负责 “资源清理”,在对象生命周期结束时自动触发,避免资源泄漏,对自定义类型成员自动递归析构。掌握两者的核心特性、初始化 / 清理规则及使用场景,能从根本上提升 C++ 代码的安全性和简洁性,为后续学习拷贝构造、赋值重载等知识点打下坚实基础。有资源申请,就必有资源释放;显式定义析构函数时,务必配套考虑资源管理逻辑。

2025-12-09 20:42:31 893

原创 C++ 类和对象核心知识:默认成员函数全解析与实战

构造 / 析构:负责对象的初始化与资源清理,有动态资源必须自定义拷贝构造 / 赋值重载:区分浅拷贝与深拷贝,动态资源类必须自定义深拷贝运算符重载:遵循 C++ 语法规则,提升代码可读性取地址重载:通常无需自定义,特殊场景可隐藏对象地址通过本文的代码示例,大家可以直接编译运行,直观感受每个默认成员函数的作用。在实际开发中,根据类是否持有动态资源,灵活选择是否自定义这些函数,就能写出安全、高效的面向对象代码。

2025-12-05 20:18:23 806

原创 C++ 入门指南:从底层逻辑到实战落地,零基础全面吃透

cpp// 全缺省参数:所有参数都有默认值// 半缺省参数:部分参数有默认值cpp// 1. 参数类型不同// 2. 参数个数不同void f() { cout << "无参数" << endl;void f(int a) { cout << "1个参数" << endl;// 3. 参数顺序不同C++ 通过class关键字定义类,将变量(属性)和函数(方法)封装在一起,实现 "数据隐藏" 和 "行为封装":cppprivate:// 私有成员(仅类内部可访问)int age;

2025-12-03 17:24:24 890

原创 深入浅出掌握排序算法:原理、实现与性能对比

小数据量(n<1000):优先选择直接插入排序或冒泡排序,实现简单且效率足够;中大数据量(n≥1000):优先选择快速排序(综合性能最优);若需要稳定排序,选择归并排序;若内存受限,选择堆排序(无额外空间需求);数据范围集中:选择计数排序,效率远超比较类排序;序列接近有序:选择直接插入排序或冒泡排序(最好情况 O (n)),避免快速排序退化为 O (n²)。排序算法是算法学习的基础,掌握它们的原理和特性,不仅能在开发中灵活运用,也能为后续更复杂的算法学习打下坚实基础。

2025-12-02 21:18:52 929

原创 二叉树全面解析:从概念到实战,一文掌握核心知识点

二叉树是特殊的树,满足 “每个结点的度≤2” 且 “子树有左右之分(有序树)”。其集合有两种情况:要么为空,要么由根结点 + 左子树 + 右子树组成(左、右子树均为二叉树)。首先明确二叉树结点的链式存储结构,后续所有操作均基于此定义:c#include "queue.h" // 后续层序遍历需队列支持// 二叉树结点数据类型// 二叉树结点结构// 数据域// 左孩子指针// 右孩子指针} btnode;heap.h二叉树基础:定义、性质、特殊类型(完全二叉树、平衡二叉树);二叉树操作。

2025-11-28 19:04:37 996

原创 栈和队列核心原理与 OJ 实战:从理论到代码落地

c// 栈元素类型,可根据需求修改type* a;// 动态数组存储栈元素int top;// 栈顶指针(指向栈顶元素的下一个位置)// 栈的容量} stack;// 栈的核心操作接口// 初始化栈// 销毁栈// 入栈// 出栈// 获取栈顶元素// 判断栈是否为空// 获取栈中元素个数c// 队列元素类型,可根据需求修改// 链表节点结构// 指向下一个节点的指针type val;// 节点存储的值} qnode;// 队列结构:维护队头、队尾指针和元素个数。

2025-11-24 20:06:02 968

原创 顺序表与链表核心 OJ 题实战解析:从基础到进阶

对比维度顺序表 OJ 题链表 OJ 题核心技巧双指针法(前后指针、快慢指针)、利用数组连续性指针操作(反转、拼接)、快慢指针、虚拟头节点时间复杂度多为 O (N),依赖数组随机访问优化多为 O (N),依赖指针跳转避免元素移动空间复杂度多要求 O (1)(原地操作,覆盖无效元素)多为 O (1)(仅操作指针,无需额外空间)常见考点元素移除、去重、合并、分割反转、查找(中间 / 倒数节点)、环判断、合并常见问题数组越界、元素覆盖导致有效数据丢失空指针异常、链表断裂、内存泄漏。

2025-11-22 22:07:54 573

原创 从理论到实战:C 语言贪吃蛇游戏开发全指南(深度解析与代码落地)

基础可视化:构建游戏地图,用特定字符区分墙体、蛇身与食物,形成清晰的游戏区域。核心交互:支持上 / 下 / 左 / 右方向键控制蛇的移动方向,实现 “蛇吃食物” 的核心逻辑 —— 吃到食物后蛇身增长,食物重新生成。失败判定:设置两种失败条件:蛇头触碰地图边界(撞墙死亡)、蛇头触碰自身身体(咬自身死亡),触发后游戏结束。计分系统:默认每吃一个食物得 10 分,实时显示当前得分与单个食物分值,让玩家直观了解游戏进度。进阶控制。

2025-11-18 21:42:09 891

原创 揭秘 C 语言编译链接:从源代码到可执行程序的完整流程

文件操作的核心流程:打开文件(fopen)→ 读写操作(fgetc/fputs 等)→ 关闭文件(fclose),缺一不可。打开文件后必须判断返回值是否为 NULL,避免空指针操作。关闭文件后要将指针置为 NULL,防止野指针问题。区分文本文件和二进制文件的读写方式,二进制文件读写需加b模式。正确使用feof函数,仅用于判定文件结束原因,而非直接判断是否结束。掌握文件操作后,你可以实现更多实用功能,比如配置文件读写、日志记录、数据备份等。

2025-11-07 21:06:36 940

原创 C 语言文件操作全解析:从基础到实战,轻松掌握数据持久化

文件操作的核心流程:打开文件(fopen)→ 读写操作(fgetc/fputs 等)→ 关闭文件(fclose),缺一不可。打开文件后必须判断返回值是否为 NULL,避免空指针操作。关闭文件后要将指针置为 NULL,防止野指针问题。区分文本文件和二进制文件的读写方式,二进制文件读写需加b模式。正确使用feof函数,仅用于判定文件结束原因,而非直接判断是否结束。掌握文件操作后,你可以实现更多实用功能,比如配置文件读写、日志记录、数据备份等。

2025-11-07 21:04:29 533

原创 深入浅出 C 语言结构体:从语法到实战的全方位解析

声明结构体需要遵循固定语法,核心是struct关键字、标签(Tag)、成员列表和可选的变量列表,格式如下:cstruct 标签(Tag)成员列表;// 不同类型的成员变量,如int、char[]等} 变量列表;// 声明时可直接定义变量,分号必须保留以 “学生” 为例,完整的结构体声明代码如下:c// 声明一个名为Stu的结构体类型,包含4个成员struct Stu// 名字:字符数组,最多存储19个字符+1个结束符int age;// 年龄:整数类型// 性别:字符数组。

2025-11-06 15:22:58 817

原创 深入理解数据在内存中的存储:整数、字节序与浮点数

大端字节序(Big-endian):数据的低位字节存放在内存的高地址高位字节存放在内存的低地址(类似人类读写数字的习惯,“高位在前”);小端字节序(Little-endian):数据的低位字节存放在内存的低地址高位字节存放在内存的高地址(“低位在前”,更符合计算机底层运算逻辑)。以0x11(权重最高)、0x22;0x330x44(权重最低)。在内存中的存储形式(假设起始地址为0x005DF848字节序0x005DF848(低地址)0x005DF8490x005DF84A。

2025-11-03 20:40:31 996

原创 C 语言核心知识点解析:字符串、内存与字节序

字符串函数strcpy、strcat的实现需关注'\0'结尾和内存溢出问题;memcpy适用于非重叠内存拷贝,memmove通过正向 / 反向拷贝处理内存重叠;字节序是多字节数据的存储顺序,可通过字符指针访问低地址字节判断系统字节序;无符号类型运算会发生循环溢出,strlen以'\0'为字符串结束标志。掌握这些知识点,能帮助我们更高效地编写 C 语言代码,规避常见的内存错误和数据计算问题。

2025-11-02 16:53:02 638

原创 C 语言实战:手把手教你做一个包含扫雷与猜数的双游戏项目

这是一个基于 C 语言控制台的轻量级游戏集合,无需复杂的图形库,仅用标准库函数就能实现完整功能。适合 C 语言入门后,想通过项目巩固知识点的同学,代码结构清晰,可扩展性强。二维数组:用于存储棋盘数据,掌握 “额外增加 2 行 2 列处理边界” 的技巧;函数封装:将不同功能拆分到独立函数,降低代码耦合度,提高复用性;随机数生成:rand()生成随机数,srand()配合time(NULL)提供动态种子,确保随机性;递归算法:Expand函数通过递归实现自动展开,理解递归的边界条件和调用逻辑;指针应用。

2025-11-02 16:43:32 823

原创 C语言的分支与循环语句

前面学习了三种循环while,do while,for,这三种循环往往会嵌套在一起才能更好的解决问题,就是我们所说的:循环嵌套,这里我们就看一个例子。这就是switch语句典型的用法,但是这种用法有明显的缺陷,就是无法及时停止,就是当你输入1的时候,他会把后面所有的结果全部打印。一次跳出两层或多层循环。每个if(表达式)语句里放的都是表达式,如果表达式为真,则执行下边的语句,如果为假,则判断下一个分支语句。break的功能:在循环中只要遇到break,就停止后期的所有的循环,直接终止循环,不打印数字5。

2025-04-18 17:24:13 889

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除