- 博客(33)
- 收藏
- 关注
原创 C++学习之旅【C++内存管理、模板初阶以及STL简介】
摘要: 本文深入解析C++内存管理机制,涵盖C/C++内存分布(代码段、数据段、栈区、堆区)的核心特性与划分原因,对比C语言动态内存管理函数(malloc/calloc/realloc/free)与C++的new/delete操作符。通过代码示例分析内存分配行为,强调realloc的自动释放特性及避免重复释放的注意事项。文章还探讨了malloc底层实现原理,并附相关学习资源链接,帮助读者理解不同内存区域的管理规则及其对程序效率、安全性的影响。 关键词: C++内存管理、内存分区、new/delete、动态内
2025-12-17 21:21:51
1442
156
原创 实战全面解析C++类和对象
本文通过选择题和编程题全面解析C++类和对象知识点。选择题部分包含30道题目,涵盖类和对象的基本概念、构造函数、析构函数、继承、多态等核心内容。编程题部分包含两道日期计算题目: 计算日期到天数转换:通过判断闰年并累加各月份天数实现日期转换 日期差值:计算两个日期之间的天数差 文章采用图文结合的方式,通过代码示例和运行结果展示,帮助读者加深对C++类和对象的理解,适合复习巩固相关知识。
2025-12-14 18:11:07
503
117
原创 C++学习之旅【C++类和对象(下)】
本文深入探讨了C++类和对象中的构造函数初始化列表与类型转换机制。在构造函数部分,重点讲解了初始化列表的特性:成员变量必须按声明顺序初始化,引用、const成员及无默认构造的类类型必须使用初始化列表,C++11支持类内缺省值作为初始化列表的补充。通过代码示例展示了初始化列表的优先级高于类内初始值,并分析了成员初始化顺序导致的常见问题。 在类型转换方面,阐述了内置类型到类类型的隐式转换规则,介绍了explicit关键字阻止隐式转换的作用,以及类类型对象间的转换机制。文章通过多个代码案例演示了构造函数参数传递、
2025-12-13 21:41:08
1064
123
原创 C++学习之旅【C++类和对象(中)】
析构函数是C++类中用于对象销毁时自动调用的特殊成员函数,主要完成资源清理工作。其特点包括:函数名为~类名;无返回值无参数;一个类只能有一个析构函数;若未显式定义,编译器会自动生成默认析构函数。默认析构函数对内置类型不做处理,对自定义类型成员会调用其析构函数。当类涉及动态内存分配等资源管理时,必须显式定义析构函数进行释放,避免内存泄漏。析构函数调用顺序与构造函数相反,遵循"后构造先析构"原则。通过合理使用析构函数,可确保对象生命周期结束时资源被正确释放,是C++资源管理的重要机制。
2025-12-11 23:23:46
1348
117
原创 C++学习之旅【C++类和对象(上)】
C++类和对象基础概念总结 本文介绍了C++中类和对象的核心概念: 类定义:类是封装数据和行为的复合类型,使用class关键字定义,包含成员变量和成员函数。 访问限定符:public、protected、private控制成员访问权限,默认class为private,struct为public。 类域:类构成独立作用域,成员函数定义需通过::指定类域。 实例化:通过类创建对象的过程,分为两种方式: 栈上实例化:自动管理内存(如Date d1;) 堆上实例化:手动分配释放内存(如Date* pd = new
2025-12-09 23:30:05
1487
110
原创 C++学习之旅【C++基础知识介绍】
本文简要介绍了C++的发展历程、版本演变及主要应用领域,重点阐述了命名空间(namespace)的概念及其在解决命名冲突中的核心作用。文章首先回顾了C++从1979年诞生到1998年标准化的关键节点,并列举了游戏引擎、音视频处理、嵌入式开发等典型应用场景。随后通过代码示例演示了C++基础语法和命名冲突问题,详细讲解了namespace的定义方法及其隔离作用域的原理。最后提供了C++官方文档资源,为读者进一步学习奠定基础。全文以150字精炼概括了C++的核心特性和命名空间机制。
2025-12-07 16:39:11
1834
138
原创 一文彻底搞清楚数据结构之快速排序和归并排序的深入优化
本文介绍了快速排序和归并排序的优化方法,重点分析了快速排序性能的关键点及三路划分算法。文章指出快速排序性能取决于每次单趟排序后key对数组的分割情况,并提出当数组中有大量重复数据时,传统方法效率会下降。针对这一问题,详细讲解了三路划分算法的核心思想:将数组分为小于key、等于key和大于key三部分,并给出了相应的代码实现。通过对比hoare、lomuto和三路划分三种单趟排序方法在不同数据情况下的表现,展示了三路划分在处理重复数据时的优势。该优化方法能有效提升快速排序在特定场景下的性能表现。
2025-11-30 19:50:54
1862
137
原创 一文彻底搞清楚数据结构之排序算法大揭秘
摘要: 本文介绍了排序算法的基本概念和分类,重点讲解插入排序中的直接插入排序和希尔排序。直接插入排序通过逐个插入元素到有序序列实现排序,时间复杂度为O(N²)。希尔排序是其优化版本,通过分组插入和逐步缩小增量提高效率,时间复杂度优于直接插入排序。文章结合动图和代码示例,分析了两种算法的实现细节和性能特点,适用于不同场景的数据排序需求。 关键词: 排序算法、插入排序、希尔排序、时间复杂度、代码实现
2025-11-29 17:28:26
1418
115
原创 一文彻底搞清楚遍历二叉树和OJ算法题的暴力美学全面解析
本文介绍了链式二叉树的实现及相关算法操作。主要内容包括: 链式二叉树的创建方式,通过手动创建节点并建立连接关系; 二叉树的三种遍历方式(前序、中序、后序)及其递归实现; 计算二叉树结点个数、叶子结点个数等基本操作; 二叉树的高度计算、查找特定结点值以及销毁二叉树等操作。 文章通过代码示例和图解详细讲解了各算法的实现原理,帮助读者理解二叉树的递归特性。所有算法均采用递归方式实现,体现了二叉树"根-左-右"的递归结构特点。 关键词:链式二叉树、前序遍历、中序遍历、后序遍历、递归算法、二叉树
2025-11-23 18:56:48
1003
162
原创 一文彻底搞清楚二叉树和堆:从概念到存储结构解析
摘要 本文系统介绍了树和二叉树的基本概念与结构。首先阐述了树的非线性特征及其层次关系表示方法,重点分析了树的基本术语(如度、层次、路径等)和三种存储结构(双亲表示法、孩子表示法、孩子兄弟表示法)。随后详细讲解了二叉树的特殊性质,区分了满二叉树和完全二叉树两种特殊形态,并推导了二叉树的重要性质公式。最后简要说明了二叉树的顺序存储结构,为后续树形结构的学习奠定了基础。全文通过丰富的图示和术语解释,帮助读者建立对树形数据结构的系统认知。
2025-11-16 21:33:58
1885
91
原创 一文彻底搞清楚数据结构之栈与队列:从定义到实战解析
本文介绍了栈和队列这两种线性表结构。栈遵循"后进先出"(LIFO)原则,仅允许在栈顶进行插入和删除操作;队列则遵循"先进先出"(FIFO)原则,允许在队尾插入、队头删除。文章详细说明了栈的顺序存储和链式存储结构,并介绍了多栈共享空间以提高空间利用率的方法。同时给出了栈的具体代码实现(包括初始化、入栈、出栈等操作),以及队列的顺序存储结构示意图。这两种数据结构在计算机科学中应用广泛,是学习算法和程序设计的重要基础。
2025-11-13 22:13:33
1204
51
原创 一文彻底搞清楚链表算法实战大揭秘和双向链表实现
本文摘要主要介绍了链表相关算法题的实现思路和代码解析。重点包括: 移除链表元素:给出两种解法,一种是直接处理头节点和遍历删除,另一种是创建新链表筛选元素,时间复杂度均为O(N)。 反转链表:提供头插法和三指针法两种实现,通过指针操作完成链表反转。 寻找链表中点:演示了计算长度遍历和快慢指针两种方法,快慢指针法更高效。 合并有序链表:使用哨兵节点简化边界处理,通过指针遍历实现有序合并。 文中对每个算法都给出了详细代码实现和复杂度分析,展现了链表操作的多种技巧,适合数据结构学习者参考实践。
2025-11-08 15:56:42
1850
50
原创 一文彻底搞清楚数据结构之链表
本文介绍了单链表的基本概念和实现方法。单链表是一种非连续、非顺序的线性存储结构,通过指针链接实现数据元素的逻辑顺序。文章详细讲解了单链表的定义、结点组成(数据域和指针域)、链表的逻辑连续性以及物理存储特性。 通过代码示例展示了单链表的基本操作: 链表创建和初始化 链表打印(遍历) 头插和尾插操作(O(1)和O(N)时间复杂度) 头删和尾删操作 指定位置前插入数据 文中使用形象的火车车厢比喻帮助理解链表的动态特性,并对比了链表与顺序表在增删操作上的时间复杂度差异。这些实现为解决顺序表增删时间复杂度高、空间浪费
2025-11-06 11:40:59
1433
43
原创 一文彻底搞清楚数据结构之顺序表
摘要 本文介绍了数据结构中的线性表和顺序表概念。线性表是n个具有相同特性数据元素的有限序列,其逻辑结构为线性但物理结构不一定连续。顺序表采用顺序存储结构,底层基于数组实现。文章详细对比了静态与动态顺序表的区别,并提供了动态顺序表的核心操作实现代码,包括初始化、头尾增删、指定位置增删等。每种操作都标注了时间复杂度,如尾插O(1)、头插O(N)等,通过图示直观展示数据移动过程。最后提出思考题,引导读者延伸思考指定位置后插入的实现方法。
2025-11-02 16:54:51
1252
33
原创 算法复杂度
本文主要介绍了数据结构与算法的基础概念,重点讲解了算法效率的衡量方法——时间复杂度和空间复杂度。文章首先通过一个轮转数组的案例引出时间复杂度的重要性,解释了为什么需要理论计算而非实际运行时间评估算法效率。随后详细阐述了时间复杂度的定义、计算规则(大O表示法)及其应用示例,强调在分析算法时需关注增长量级而非精确执行次数。通过多个代码示例演示了如何推导不同算法的时间复杂度,帮助读者理解数据结构与算法的核心评估标准。
2025-10-28 23:26:28
1491
13
原创 预处理详细介绍
本文主要介绍了C语言中的预处理指令及其应用。内容涵盖预定义符号(如__FILE__、__LINE__等)、#define定义常量和宏、宏替换规则、带副作用的宏参数、宏与函数的对比、#和##运算符、命令行动态定义符号、条件编译指令以及头文件包含的两种方式等。重点解析了宏定义中的常见问题(如运算符优先级、参数副作用)和解决方案,比较了宏与函数在效率、类型安全等方面的差异,并提供了避免头文件重复包含的实用技巧。文章通过具体代码示例,帮助读者深入理解预处理阶段的工作原理及其在程序开发中的实际应用价值。
2025-10-25 17:37:39
917
15
原创 编译和链接
摘要:C程序从源代码到可执行文件需经历翻译环境和运行环境。翻译环境包括预处理(处理宏、头文件等)、编译(词法、语法、语义分析)、汇编(生成机器码)和链接(合并目标文件、地址重定位)四个阶段。运行环境涉及程序加载、调用main函数、执行指令(使用栈和静态内存)及终止程序。多文件项目通过单独编译再链接实现,链接器负责解决跨文件符号引用问题。
2025-10-23 17:55:21
867
13
原创 文件操作知识
文章摘要:本文系统介绍了C语言中文件操作的核心概念。主要内容包括:1.文件的作用(实现数据持久化存储);2.文件分类(程序文件与数据文件);3.文本文件与二进制文件的存储差异;4.文件指针(FILE结构体)和标准流(stdin/stdout/stderr);5.文件打开关闭操作(fopen/fclose)及多种模式;6.文件读写函数(fgetc/fputc等);7.随机读写(fseek/ftell/rewind);8.文件结束判定方法;9.文件缓冲区机制。通过代码示例详细演示了各类文件操作,并强调了常见注意
2025-10-22 18:56:02
1086
9
原创 动态内存管理
C语言动态内存管理摘要:本文介绍了C语言中动态内存分配的必要性及实现方式。主要内容包括:1. 静态内存分配的局限性(固定大小、需预知长度);2. 动态内存函数:malloc申请空间、free释放空间、calloc初始化空间、realloc调整空间;3. 常见错误(空指针解引用、内存泄漏等)及解决方案;4. 柔性数组特性及其优势(内存连续、释放方便);5. 程序内存区域划分(栈区、堆区、静态区等)。通过动态内存管理,程序员可灵活控制内存使用,但需注意及时释放避免内存泄漏。(149字)
2025-10-18 17:11:22
1134
8
原创 自定义类型:结构体、联合和枚举
本文主要介绍了C语言中结构体、联合体和枚举类型的相关概念和使用方法。首先详细讲解了结构体的声明、变量创建、初始化、特殊声明和自引用问题;其次重点分析了结构体内存对齐规则及其原因,并展示了如何修改默认对齐数;然后介绍了结构体传参的优化方法(优先传递地址);接着讲解了位段的概念、内存分配和跨平台问题;最后详细说明了联合体(共用体)的特点、大小计算和实际应用,以及枚举类型的声明、优点和使用场景。全文通过代码示例深入浅出地讲解了这些复杂数据类型的核心知识点,特别强调了内存管理和性能优化方面的注意事项。
2025-10-14 23:12:17
1450
4
原创 内存函数以及数据在内存中的存储
本文介绍了C语言中内存操作函数memcpy、memmove、memset、memcmp的使用和实现原理,以及数据在内存中的存储方式。重点包括:1) memcpy和memmove的区别在于能否处理内存重叠;2) 整数以补码形式存储,浮点数按IEEE 754标准存储;3) 大小端字节序的概念及判断方法;4) 通过示例代码演示了各种内存操作函数的使用场景和注意事项。文章还分析了浮点数存储的特殊规则,解释了为何相同内存数据在不同类型下的解释结果不同。
2025-10-12 17:00:27
1145
6
原创 字符和字符串函数相关内容介绍
本文介绍了C语言中常用的字符处理函数和字符串操作函数,包括字符分类函数(如islower、isupper等)、字符转换函数(tolower、toupper)、字符串操作函数(strlen、strcpy、strcat、strcmp等)及其模拟实现方法,以及strerror等实用函数。文章详细说明了每个函数的功能特点、使用注意事项,并提供了代码示例和模拟实现思路,帮助开发者更好地理解和应用这些基础但重要的字符串处理工具。
2025-10-11 22:41:53
968
6
原创 深入理解指针(下)
本文深入讲解了C语言中指针的高级应用,主要内容包括:字符指针的本质是存储字符串首字符地址;数组指针指向数组,其定义需注意优先级;二维数组传参本质是传递首行地址;函数指针用于存储函数地址并通过指针调用函数;typedef可简化复杂类型声明;qsort函数通过回调实现排序功能;sizeof和strlen的区别在于前者计算内存大小后者统计字符数;最后通过多道指针运算笔试题帮助理解指针操作原理。文章全面解析了指针的各种应用场景,是C语言指针进阶的重要参考资料。
2025-10-05 15:54:02
1187
8
原创 深入理解指针(上)
本文系统讲解了C语言指针的核心概念与应用。首先通过宿舍楼类比引入内存地址概念,指出指针本质是内存地址的别名。接着详细解析了指针变量的声明、解引用操作、类型意义及void*指针的特殊性。文章还深入探讨了指针运算(包括指针加减整数、指针相减及关系运算)、const修饰指针的两种方式、野指针的成因与防范措施。最后介绍了指针在数组访问、函数传参(特别是传址调用)、冒泡排序实现以及二级指针、指针数组等高级用法。通过丰富的代码示例和内存图解,帮助读者全面理解指针这一C语言核心特性及其灵活应用场景。
2025-10-03 11:56:32
806
5
原创 操作符详解
本文系统介绍了C语言中的各类操作符及其应用,包括算术、位、移位、赋值等操作符的分类和使用方法。详细讲解了二进制与其他进制的转换原理,以及原码、反码、补码的概念和计算机存储机制。重点分析了移位操作符的运算规则、位操作符的实用技巧,并通过编程练习演示了具体应用。此外,还阐述了结构体成员访问、操作符优先级和结合性等关键概念,深入探讨了表达式求值过程中的整型提升和算术转换现象。最后通过多个问题表达式案例,揭示了复杂表达式可能存在的歧义性和风险,强调了编写清晰代码的重要性。
2025-09-27 15:33:05
790
4
原创 递归相关内容介绍
递归是C语言中函数自我调用的编程技巧,可将复杂问题分解为更小的相似子问题。文章通过阶乘计算和数字逐位打印两个示例,展示了递归的基本思想和使用方法。同时指出递归存在栈溢出和效率低下的风险,建议合理使用迭代替代。最后介绍了青蛙跳台阶和汉诺塔两个经典递归问题。递归虽简洁但需谨慎使用,需设置终止条件并考虑性能问题。
2025-09-20 15:59:30
1256
7
原创 数组和函数实践:扫雷游戏
本文介绍了扫雷游戏的分析设计与实现过程。游戏采用控制台交互方式,使用两个11×11的二维数组分别存储雷区信息(mine)和显示信息(show),通过扩展数组边界解决越界问题。系统实现了经典9×9棋盘、随机布置10个雷的基础功能,包含初始化棋盘、显示界面、布雷、排雷等核心模块。文章还提出了难度选择、区域展开、标记雷等扩展功能的设想。代码采用模块化设计,分为game.h头文件、game.c功能实现和test.c测试逻辑三部分,展示了完整的游戏开发流程。最后提供了在线扫雷游戏链接供参考。
2025-09-19 19:56:51
743
1
原创 函数相关内容介绍
本文系统介绍了C语言中函数的相关知识,主要包括:1.函数概念与分类(库函数和自定义函数);2.函数的参数传递机制(形参与实参的关系);3.函数返回值的使用规范;4.数组作为函数参数的处理方式;5.函数嵌套调用和链式访问的编程技巧;6.多文件编程中的函数声明与定义;7.static和extern关键字的用法。通过具体代码示例详细讲解了函数的设计规范、使用注意事项以及实际应用场景,帮助读者掌握模块化编程的核心思想,提升代码复用性和开发效率。
2025-09-17 18:14:11
1163
原创 数组相关内容介绍
本文介绍了C语言中数组的基本概念和使用方法。主要内容包括:一维数组的创建和初始化,数组下标的使用,数组在内存中的连续存储特性,以及sizeof计算数组元素个数的方法。同时讲解了二维数组的概念、创建、初始化和使用,包括行列下标访问和输入输出。文章还介绍了C99中的变长数组特性,并提供了两个练习示例:字符移动汇聚和二分查找算法。通过本文可以系统学习C语言数组的基本操作和实际应用。
2025-09-16 17:06:23
1401
4
原创 分支和循环语句(下)
本文介绍了如何用C语言实现一个简单的猜数字游戏。主要内容包括:1)使用rand()函数生成伪随机数及其局限性;2)通过srand()结合time()设置随机数种子实现真正的随机效果;3)讲解如何生成指定范围的随机数;4)完整实现猜数字游戏逻辑,包括用户输入、比较判断和游戏循环。文章还提供了优化建议,如增加猜测次数限制,并鼓励读者自行实践改进。
2025-09-15 16:26:25
1057
3
原创 分支和循环语句(上)
本文介绍了C语言中的控制结构,包括选择结构和循环结构。主要内容包括:1. if-else语句的语法和使用方法,包括嵌套if和悬空else问题;2. 关系运算符和条件运算符的使用;3. 逻辑运算符及其短路特性;4. switch语句的语法和注意事项;5. while、for和do-while三种循环结构;6. break和continue语句在循环中的应用;7. 循环嵌套的实例;8. goto语句的使用场景。文章通过具体代码示例详细讲解了各种控制结构的语法规则和使用技巧,帮助读者掌握C语言中的流程控制方法。
2025-09-14 20:02:06
1103
3
原创 C语言的常见概念
C语言是计算机编程语言之一,最初为Unix系统开发而设计,属于编译型语言,需通过编译器将源代码转换为可执行文件。常见的编译器包括msvc、clang、gcc等,也可使用集成开发环境(IDE)如VS2022。VS2022作为主流IDE,功能全面且易上手,适合初学者,但安装包较大。推荐使用其免费社区版学习。
2025-09-12 18:59:18
244
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅