- 博客(60)
- 收藏
- 关注
原创 零基础吃透 C++ 类默认成员函数:万字核心知识点汇总
本文系统介绍了C++类中六大默认成员函数的核心知识点。首先阐述了构造函数的特点与使用规则,包括无参构造、带参构造和全缺省构造的区别;其次讲解了析构函数的资源释放机制及自动调用特性;然后深入剖析拷贝构造函数的引用传参必要性,避免无限递归问题;最后通过日期类实例演示了运算符重载的实现方法。文章强调编译器自动生成的默认函数与手动实现的差异,帮助开发者理解何时需要自定义这些函数,并提供了完整的代码示例辅助理解。
2025-12-27 14:31:24
735
原创 赋值运算符重载为什么必须定义为类的成员函数
本文探讨了C++中赋值运算符重载必须定义为类成员函数的原因。核心在于语法强制规定和语义匹配需求:1)C++标准明确要求;2)成员函数的this指针天然绑定左值对象,符合修改语义;3)支持连续赋值等特性;4)保持与默认赋值运算符行为一致。相比加减等运算符,赋值具有"修改自身"的特殊语义,必须由对象自身管理。全文通过代码示例和语义分析,清晰阐释了这一语法规则背后的设计逻辑。
2025-12-27 14:31:19
690
原创 C++类和对象深度解析:定义、内存布局和this指针
本文系统讲解了C++中类与对象的核心概念。首先介绍了类的定义格式,包括class关键字的使用、访问限定符(public/protected/private)以及类域的概念。其次详细阐述了对象实例化过程,分析了对象内存大小计算规则(遵循结构体内存对齐原则),并解释了空类的特殊情况。最后深入探讨了this指针的底层原理,说明它是编译器隐式添加的指向当前对象的指针,是成员函数访问成员变量的关键机制。通过Date类等示例代码,帮助读者理解从类定义到对象实例化的完整流程,以及面向对象编程中封装特性的实现原理。
2025-12-18 09:00:00
922
3
原创 Python 核心语法与常用库完全指南
本文整理了Python编程的核心知识点,涵盖基础数据类型(列表、元组、字典)、字符串操作、文件读写、正则表达式以及常用库(NumPy、matplotlib等)的实战用法。重点内容包括:列表的索引、追加、排序等方法;字典的键值对操作与遍历;字符串的格式化输出、分割替换等处理技巧;以及NumPy数组操作和matplotlib数据可视化基础。文章还包含lambda函数、集合特性等实用技巧,适合Python初学者快速掌握核心语法和常用功能。
2025-12-18 09:00:00
917
3
原创 C语言编程实战:每日一题:用栈实现队列
本文介绍了使用栈结构实现队列功能的两种方法。初始方法采用主栈和辅助栈的频繁元素转移,确保队列顺序但效率较低。优化后的方案设计了输入栈和输出栈的双栈结构:入队操作直接压入输入栈,出队时若输出栈为空则一次性转移所有元素。这种方法使入队和出队操作的时间复杂度均优化为O(1),大幅提升了效率。文章包含详细的思路图解和完整代码实现,通过对比展示了数据结构设计的优化思路,适合算法学习者和开发者参考。
2025-12-11 09:39:18
592
25
原创 新手避坑指南:C++ 引用、内联函数与 nullptr 全解析
本文深入解析C++三大核心特性:引用、内联函数与nullptr。引用作为变量别名,需注意初始化规则和const权限控制;内联函数通过减少栈帧开销优化性能,但需权衡代码膨胀问题;nullptr作为类型安全的空指针替代NULL,避免隐式类型转换问题。文章通过代码示例详细说明各特性的正确使用场景与注意事项,帮助开发者规避常见陷阱,提升代码质量与性能。
2025-12-11 09:38:56
847
25
原创 C++ 入门第一课:命名空间、IO 流、缺省参数与函数重载全解析
本文介绍了C++与C语言的基础差异,重点讲解了四个核心概念:命名空间用于解决多人协作时的命名冲突问题;C++输入输出流简化了I/O操作并支持自动类型识别;缺省参数为函数参数提供默认值;函数重载允许同名函数通过不同参数列表实现多态。这些特性共同构成了C++相较于C语言的基础优势,为后续深入学习奠定基础。文章还提供了相关代码示例和使用注意事项。
2025-12-07 16:04:10
1079
8
原创 C语言编程实战:每日一题:用队列实现栈
本文介绍了如何使用两个队列实现栈的功能。通过将一个队列中的元素(除最后一个)转移到另一个队列,可以模拟栈的“后进先出”特性。文章包含详细的思路图解和完整C语言实现代码,展示了队列的基本操作和栈的实现方法。关键点在于利用两个队列交替存储元素,确保每次都能取出最后插入的元素,从而满足栈的操作要求。
2025-12-05 11:06:32
590
原创 C语言编程实战:每日一题:有效的括号
本文介绍了LeetCode经典题目“有效的括号”的解题思路与实现方法。通过栈数据结构实现括号匹配,利用“先进后出”特性处理嵌套括号。文章详细解析了核心逻辑、边界条件处理、内存安全等关键点,并提供了C语言实现代码。该题目考察对栈的理解与应用,时间复杂度O(n),空间复杂度O(n),是学习数据结构的典型案例。文末还总结了常见误区和栈的其他应用场景。
2025-12-04 09:02:43
679
原创 一文吃透 “栈”:从内存分区到数据结构的底层逻辑拆解
本文探讨了内存栈区与数据结构栈的关系及特性。内存栈区是线程专属的自动管理区域,采用LIFO机制存储函数调用参数、局部变量等临时数据,具有高效但容量有限的特点。数据结构栈是遵循LIFO规则的线性结构,可通过数组或链表实现,支持快速入栈、出栈等操作。两者虽应用场景不同,但共享先进后出的核心特性。栈结构广泛应用于函数调用、表达式求值、括号匹配等计算机科学领域,是程序执行和算法设计的基础支撑。
2025-12-04 08:44:00
1276
原创 C语言编程实战:每日一题:随机链表的复制
本文介绍了一种高效复制随机链表的方法,采用"原地复制+拆分"策略实现O(n)时间复杂度和O(1)空间复杂度。该方法分三步:1)在原节点后插入拷贝节点;2)利用节点成对结构设置random指针;3)拆分出独立拷贝链表。关键点在于通过原节点的random直接定位其拷贝节点,无需额外空间存储映射关系。文末提供了完整C代码实现和详细流程图解,适用于含随机指针的复杂链表深拷贝场景。
2025-12-02 20:22:15
980
2
原创 C语言编程实战:每日一题:环形链表Ⅱ
本文介绍了环形链表Ⅱ问题的解法,基于Floyd判圈算法(龟兔赛跑算法)。算法分为环检测和入口定位两个阶段:通过快慢指针相遇判断是否有环,再利用数学推导确定环入口位置。时间复杂度O(n),空间复杂度O(1)。文章包含详细原理分析、执行步骤、流程图和C语言实现代码,帮助理解如何高效检测环形链表并定位入口节点。
2025-12-01 15:21:53
844
1
原创 C语言编程实战:每日一题:环形链表
本文介绍了Floyd判圈算法(龟兔赛跑算法)检测链表环的方法。通过快慢指针(slow每次1步,fast每次2步)遍历链表,若两指针相遇则存在环。算法时间复杂度O(n),空间复杂度O(1),是高效检测链表环的经典解法。附有流程图和C语言实现代码,适用于LeetCode环形链表问题。
2025-11-30 19:55:09
987
原创 C语言编程实战:每日一题:相交链表
本文介绍了如何判断两个链表是否相交并找到交点的方法。通过计算两个链表的长度差,先让较长链表的指针移动差值步数,使两个指针处于同一起点位置,然后同步遍历直到找到相同节点即为交点。文中提供了流程图、具体步骤示例和代码实现,使用C语言完成了这一算法,适用于解决LeetCode上的相交链表问题。
2025-11-29 08:49:53
879
原创 C语言编程实战:每日一题 :链表的回文结构
本文分享了判断链表回文结构的算法思路与实现。通过寻找中间节点并反转后半部分链表,然后逐一比较前后半段节点值来判断回文性。文章提供了完整的C++代码实现,包括中间节点查找、链表反转和回文判断三个核心函数。该方法时间复杂度为O(n),空间复杂度O(1),是解决链表回文问题的经典方案。
2025-11-28 09:36:51
309
1
原创 C语言编程实战:每日一题 :返回倒数第k个节点
本文介绍了使用快慢指针算法高效查找链表倒数第k个节点的方法。通过让快指针先走k步,然后快慢指针同步前进,当快指针到达末尾时,慢指针正好指向目标节点。相比传统遍历两次的方法,该算法只需一次遍历即可完成,时间复杂度为O(n)。文章提供了清晰的思路解析和C语言实现代码,适用于LeetCode相关题目解答。
2025-11-27 15:21:54
417
原创 时间复杂度:容易算错?单看循环算是不对的!
本文介绍了时间复杂度的概念与计算方法,重点分析了二分查找的时间复杂度特性。时间复杂度是衡量算法效率的关键指标,反映算法执行时间随输入规模的增长趋势。文章指出常见误区,强调不能仅凭循环次数判断复杂度,并以二分查找为例说明对数阶O(log n)的特性。通过对比二分查找与线性查找的效率差异,展示了二分查找在大数据量下的优势,同时也指出其必须依赖有序数组的局限性。最后总结了二分查找的两种实现方式(左闭右闭和左闭右开)及其区别。
2025-11-26 10:31:54
582
2
原创 C语言编程实战:每日一题 - day7
本文介绍了轮转数组问题的两种解法。第一种方法是逐个元素移动,时间复杂度为O(n^2);第二种采用三次反转法,通过整体反转和分组反转实现高效轮转,时间复杂度优化至O(n)。文中提供了两种方法的C语言实现代码,并分析了各自的优缺点。三次反转法因其线性时间复杂度和常量空间复杂度成为更优解。文章适合对算法优化感兴趣的读者参考。
2025-11-25 20:42:40
539
2
原创 C语言编程实战:每日一题 - day6
本文分享了解决"消失的数字"问题的三种思路:1)排序后遍历查找缺失项,时间复杂度O(n log n);2)数学求和法,通过公式计算总和后减去数组元素,时间复杂度O(n)但可能溢出;3)位运算法,利用异或特性找出缺失数,时间复杂度O(n)且无溢出风险。三种方法各有优劣,其中位运算方案最为高效安全。
2025-11-24 21:34:39
536
1
原创 爆肝整理!C 语言贪吃蛇从框架到落地全解析,含加速 / 暂停 / 计分,直接抄作业
还在纠结 C 语言练手项目?这篇贪吃蛇实战教程帮你搞定!从框架搭建到功能落地,全程保姆级解析,用链表 + WinAPI 实现经典玩法,还解锁加速、减速、暂停、计分等进阶功能无需复杂基础,跟着步骤就能复刻:先搭欢迎界面与游戏地图,再实现蛇身初始化、食物随机生成,最后完成移动、碰撞检测与资源回收。代码注释详细,关键逻辑拆解清晰,小白也能快速掌握控制台编程、链表操作核心技巧内附源码,直接可拿
2025-11-23 14:47:34
979
32
原创 WinAPI 极简教程:超简单的 Windows 接口入门
本文介绍了Windows API中控制台程序的相关函数,包括调整控制台窗口大小和标题的mode和title命令,获取标准设备句柄的GetStdHandle()函数,以及控制光标属性和位置的GetConsoleCursorInfo()、SetConsoleCursorInfo()和SetConsoleCursorPosition()函数。通过COORD结构体可精确定位屏幕坐标,实现文本输出的灵活控制。这些函数为开发贪吃蛇等控制台小游戏奠定了基础。
2025-11-22 10:15:55
912
29
原创 数据结构:手把手教你写 C 语言双向循环链表(内含分模块功能函数实现)
本文介绍了双向链表的实现方法,重点讲解了带头双向循环链表的数据结构设计及各功能接口的实现。通过List.h文件定义了链表节点结构体和操作接口,List.c文件具体实现了初始化、节点创建、插入删除等核心功能。关键技术包括哨兵位设计、指针四步调整法、内存管理和边界条件处理。相比单链表,双向链表通过前驱指针简化了操作,时间复杂度均为O(1)。代码采用模块化设计,通过类型抽象增强复用性,适合作为基础数据结构的学习案例。
2025-11-20 20:41:59
1087
18
原创 C语言编程实战:云刷题 - day5
本文分享了关于链表的4个经典算法题解: 链表的中间节点:使用快慢指针法,快指针走两步、慢指针走一步,当快指针到达末尾时慢指针指向中间节点,时间复杂度O(n)。 反转链表:采用头插法,遍历原链表时将每个节点插入新链表头部,最终返回新链表的头节点,仅需一次遍历。 合并两个有序链表:通过哨兵节点简化操作,比较两链表节点值,较小者尾插到新链表,剩余节点直接链接,时间复杂度O(n+m)。 移除链表元素:遍历链表,跳过值等于目标值的节点,调整指针指向以删除节点,需处理头节点特殊情况。
2025-11-20 09:21:09
770
8
原创 C语言编程实战:大家一起云刷题 - day4
本文总结了C语言编程中的常见易错点和典型题目解析。通过7个精选案例,包括变量初始化陷阱、指针运算、两数之和算法、回文数判断、链表操作等,深入剖析了C语言的细节特性。特别指出全局变量默认初始化为0、有符号与无符号数比较的隐式转换、指针类型对内存操作的影响等易忽略问题,并提供了链表反转的标准实现方法。这些内容对于C语言初学者理解底层原理和避免常见错误具有重要参考价值。
2025-11-16 14:05:53
1045
29
原创 数据结构:为什么单链表总是学不透?核心原理与常见误区解析
单链表是一种通过指针将节点串联起来的线性数据结构,每个节点包含数据和指向下一节点的指针。本文结合代码实例,详细解析单链表的实现要点与常见错误。重点内容包括: 基础结构:节点由数据域和指针域组成,尾节点指针为NULL 创建要点:手动连接节点时需注意指针指向关系和边界条件 插入操作:必须使用二级指针修改头指针,避免值传递问题 删除陷阱:需处理空链表、单节点等特殊情况,防止内存泄漏 遍历技巧:正确设置循环条件确保完整访问所有节点。
2025-11-16 10:25:19
1118
23
原创 C语言编程实战:大家一起云刷题 - day3
本文分享了C语言编程中的5个经典算法题目及其解答代码,包括递归实现阶乘、打印整数每一位、无临时变量交换整数、统计二进制1的个数以及求两数二进制不同位数。同时详细讲解了右移操作符的两种类型:逻辑右移(高位补0,适用于无符号数)和算术右移(高位补符号位,保持有符号数符号不变)。文章还提供了输出二进制数奇偶位的小技巧,适合C语言初学者学习位运算和递归编程。配套的代码示例可直接运行测试。
2025-11-14 21:17:55
717
6
原创 实用的调试技巧
本文介绍了C语言编程调试的核心技巧和常见错误类型。主要内容包括:1)调试快捷键使用(F9断点、F5调试、F10/F11单步执行);2)监视窗口和内存窗口的操作方法;3)通过栈区内存布局分析数组越界问题;4)三类编程错误(编译、链接、运行时)的特征及解决方法。重点阐述了调试工具的实际应用和内存相关问题的分析思路,帮助开发者提高代码调试效率和问题定位能力。
2025-11-13 14:48:16
947
2
原创 C语言编程实战:大家一起云刷题 - day2
本文分享了多个C语言编程实例,包括: 喝汽水问题(20元最多能喝多少瓶汽水) 菱形图案打印 0-100000水仙花数查找 数列求和(a+aa+aaa...) 斐波那契数列计算(递归与迭代实现) 递归实现n的k次方 数字各位求和(递归与循环实现) 这些题目涵盖了算法设计、循环控制、递归应用等基础编程技能,适合初学者练习提高。部分题目提供了多种解法,便于对比学习。
2025-11-13 14:46:33
402
原创 C语言编程实战:大家一起云刷题 - day 1
本文分享7个C语言编程练习题及其代码实现,涵盖基础算法和逻辑训练。内容包括:计算带余除法(商和余数)、两数比较大小、三角形类型判断、寻找数组最大值、统计1-100中含9的数字、打印乘法口诀表、绘制X形图案。每个题目提供完整代码和详细注释,适合编程初学者练习基础语法和逻辑思维。作者还推荐了个人专栏《C语言从零开始到精通》等系列教程,强调通过实践提升编程能力。文中代码风格简洁,算法优化提示(如最大值查找的效率比较)体现了编程的实用性思考。
2025-11-12 13:46:28
382
3
原创 小游戏:拓展版扫雷
这款基于C语言开发的拓展版扫雷采用9×9标准棋盘与10颗随机地雷布局,通过双棋盘架构实现逻辑分离,运行稳定可靠。核心亮点包括智能自动扩展功能,点击无雷格子可递归探索周围安全区域并显示地雷数量;完整标记系统支持地雷标记(#)与取消标记,助力精准排雷。游戏提供扫雷、标记、取消标记、中途退出四大操作,胜负判定清晰:探索完所有非雷区域即胜利,踩雷则结束并展示全部雷位。代码模块化设计,支持通过宏定义调整难度,兼具趣味性与可扩展性,是C语言初学者巩固数组、函数、递归等知识点的优质实践案例。
2025-11-12 13:12:21
1364
31
原创 C语言容易被忽略的易错点(2)
本文主要介绍了C语言编程中几个易被忽略的要点:1)continue和break的区别,前者跳过当前循环剩余部分,后者直接终止整个循环;2)逗号表达式的运算规则是以最后一个表达式结果为值;3)while循环条件判断次数比循环体多一次;4)数组传参本质是指针传递;5)复合语句中变量的作用域限制;6)形参在函数调用时才分配内存;7)函数声明必须在使用前定义。这些知识点对避免常见编程错误具有重要指导意义。
2025-11-09 14:56:05
434
7
原创 小游戏:猜数字
本文介绍了C语言实现猜数字小游戏的开发过程。文章详细讲解了随机数生成相关的函数:rand()生成伪随机数,srand()初始化随机种子,time()获取时间戳作为动态种子。通过取模运算实现限定随机数范围(1-100)。游戏包含菜单界面和猜数逻辑,能提示玩家输入数字偏大或偏小。代码分为game.h和test.c两部分,采用模块化设计,包含输入验证功能。这个小游戏完整展示了随机数应用和基础逻辑的实现方法。
2025-11-08 12:58:45
813
1
原创 C语言容易忽略的小知识点(1)
本文分享了10个C语言编程中容易被忽略的小知识点,包括strlen函数特性、变量存储区域、浮点数输出格式、scanf与printf的占位符规则、else匹配原则、字符串比较限制、switch语句要求等。这些细节涉及语法规则、函数行为和编程技巧,对C语言初学者尤其重要。文章以简明的格式呈现技术要点,并配有代码示例说明,帮助开发者避免常见错误,提升代码质量。更多C语言教程可关注作者专栏。
2025-11-07 21:35:30
734
原创 数据结构之顺序表:一款优秀的顺序存储结构
本文介绍了顺序表的基本概念与实现方法。顺序表是一种线性存储结构,分为静态和动态两种类型。静态顺序表容量固定,而动态顺序表可扩容。文章详细讲解了动态顺序表的实现,包括初始化、销毁、尾插、头插、头删、尾删等核心操作,并提供了完整的C语言代码示例。最后通过测试验证了顺序表的功能。完整代码已上传至Gitee仓库。
2025-10-22 16:23:54
839
34
原创 C语言题目与练习解析:配套《柔性数组和动态内存易错点》
本文分析了C语言动态内存管理的四个常见错误案例。案例一因未正确传递指针导致内存泄漏;案例二返回局部数组地址,产生野指针;案例三虽运行正常但未释放内存,存在泄漏风险;案例四释放后未置空指针,导致非法访问。针对每个案例,文章提供了修正代码,强调及时释放内存、避免野指针的重要性,并推荐通过二级指针或返回值传递动态内存地址。
2025-10-22 16:23:22
940
28
原创 精通C语言(5.柔性数组和动态内存易错点)【什么?数组长度还能来回变化?!】
本文介绍了C语言动态内存管理中常见的错误及解决方法,包括对NULL指针解引用、越界访问、错误释放等典型问题,并提供了修正代码。同时通过4个经典案例引导读者思考内存管理隐患,最后讲解柔性数组的特性及使用方法,强调其与变长数组的区别,并给出动态分配和释放内存的示例代码。全文旨在帮助开发者规避内存管理错误,提升编程质量。
2025-10-12 17:45:35
1362
32
原创 精通C语言(4.四种动态内存有关函数)
本文介绍了C语言中动态内存管理的四个核心函数:malloc、free、calloc和realloc。动态内存管理解决了固定内存分配不灵活的问题,允许程序运行时根据需要调整内存大小。malloc用于开辟内存空间,free用于释放空间;calloc在开辟空间的同时会初始化为0,而realloc可调整已有空间的大小。文章通过代码示例演示了各函数的用法,并强调了使用free后置空指针的重要性,避免野指针问题。动态内存管理提升了程序的灵活性和内存使用效率,是C语言编程的关键技术之一。
2025-10-10 22:04:56
1509
24
原创 精通C语言(3. 自定义类型:联合体和枚举)
本文介绍了C语言中的两种自定义类型:联合体和枚举。联合体(共用体)的特点是所有成员共用同一块内存空间,大小至少为最大成员的大小,并遵循内存对齐规则,常用于节省空间。枚举用于定义一组常量,增强代码可读性和维护性,相比#define更严谨且支持调试。文章通过代码示例展示了联合体的内存分配、大小计算和实际应用(如礼品兑换单),以及枚举的声明、优点和使用场景(如判断机器字节序)。这两种类型在C语言编程中具有重要价值。
2025-10-09 22:17:38
1522
11
原创 精通C语言(2.结构体)(内含彩虹)
本文详细介绍了C语言结构体的基本概念和使用方法,包括结构体的声明、变量创建与初始化、自引用、成员访问及内存对齐规则。
2025-10-08 19:47:30
1461
12
原创 C语言题目与练习解析:配套《数据在内存中的存储》
本文是《数据在内存中的存储》的配套练习解析,通过多个代码示例深入探讨了数据在内存中的存储方式及其影响。主要内容包括:有符号/无符号字符型的整数提升规则、char类型边界值的特殊处理(如-128的存储)、浮点数IEEE 754标准下的存储格式解析,以及指针类型强制转换导致的数值解释差异。重点案例揭示了小端序存储特性、数组越界与无符号数循环溢出的原理,并通过浮点数和整型的相互转换实验,直观展示了内存数据解释方式对程序结果的直接影响。这些练习有助于理解底层数据存储机制对高级语言编程的关键影响。
2025-10-04 17:34:03
909
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅