自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】关于list的使用&&底层实现

本文介绍了C++中list容器的基本特性和使用方法。list是一种基于双向链表实现的序列容器,支持高效的双向迭代以及在任意位置进行常数时间的插入和删除操作,但不支持随机访问。文章详细讲解了list的构造函数、迭代器分类(正向/反向迭代器)、容量查询、元素访问方法以及常用修改操作(push_back、pop_back、insert等)。特别强调了list独有的操作如reverse、sort等,并指出由于底层结构限制,list不能使用算法库中的sort函数。通过多个代码示例展示了list的基本操作和应用场景,同

2025-11-04 17:04:00 888

原创 【Linux】 第一个系统程序——进度条

本文介绍了计算机中的回车换行概念及其在C语言中的实现,解释了缓冲区的作用以及如何通过\n和fflush控制输出刷新。文章还演示了简易倒计时程序和进度条的实现原理,包括字符数组的构建、旋转图标的显示以及进度百分比的计算。最后通过实际代码展示了真实场景下进度条的应用,模拟了下载过程中的进度显示效果。这些内容为理解C语言中的输出控制和动态显示提供了实用指导。

2025-10-27 20:47:10 619 2

原创 【Linux】自动化构建工具--make/Makefile

本文介绍了Linux中的自动化构建工具make/Makefile,重点讲解了其工作原理和使用方法。主要内容包括:1. make和Makefile的基本概念及优势,能极大提高编译效率;2. 依赖关系和依赖方法的定义与实现;3. make的自动化推导过程和执行机制;4. 项目清理和.PHONY伪目标的使用;5. 文件修改检测机制和重新编译条件;6. 单文件和多文件的Makefile编写方法。文章通过实例和类比,详细说明了如何利用make/Makefile实现自动化编译,并提供了实用的Makefile模板,适合L

2025-10-24 23:34:25 946 2

原创 【Linux】gcc/g++编辑器 && 初识动静态库 && 程序翻译过程

本文介绍了Linux下gcc/g++编译器的使用及程序的翻译过程,重点讲解了预处理、编译、汇编、链接四个阶段的功能和命令选项。文章详细解析了动静态库的区别:静态链接将库代码复制到可执行文件中,而动态链接仅在运行时加载共享库。通过示例对比了动静态链接生成文件的大小差异,并解释了动态库的共享特性和重要性。最后指出gcc默认采用动态链接,并强调了动态库在多程序共享中的优势及其不可缺失的特性。

2025-10-22 10:38:48 875 2

原创 【C++】探秘vector的底层实现

删除vector任意位置上元素时,该位置的迭代器都会失效。这是 vector 作为连续容器的特性所决定的(与 list 等链表容器的迭代器行为不同)。对于迭代器失效,我们可以使用erase的返回值更新迭代器,也就是重新建立迭代器与元素之间的有效位置关系。

2025-10-17 17:14:58 927 2

原创 【C++】vector常用接口的使用

是一种,用于表示大小可动态变化的数组。与普通数组类似,vector 的元素也存储在中。这意味着其访问效率与普通数组完全一致。但与普通数组不同的是,vector 的大小可以动态改变,其内存空间由容器自动管理。在内部实现上,vector 会使用来存储元素。当插入新元素导致 vector 需要扩容时,容器可能会重新分配内存 —— 即分配一块新的数组空间,并将所有元素移动到新空间中。这种操作的时间开销相对较大,因此 vector 并不会在每次添加元素时都执行重新分配。相反,vector 容器会预先分配。

2025-10-14 23:00:00 1515

原创 【C++】探秘string的底层实现

本文详细介绍了C++中string类的模拟实现,主要包括成员变量(字符指针、字符串长度和容量)和各种成员函数的设计。重点讲解了构造函数、析构函数、操作符重载([]、+=、=等)、迭代器模拟、字符串操作函数(插入、删除、查找、截取等)的实现原理和注意事项。作者通过具体代码示例和内存分析,阐述了深拷贝、内存管理、函数重载等关键概念,并比较了不同实现方式的优缺点。最后还讨论了比较运算符的全局重载实现和友元函数的使用。文章内容详实,对理解string类的底层实现很有帮助。

2025-10-09 23:51:04 1005 2

原创 【Linux】Vim高效编辑:从入门到精通

Vim是一款高效的命令行文本编辑器,核心优势在于键盘驱动的快速操作和强大的可扩展性。它包含三种基本模式:命令模式(默认)、插入模式(输入文本)和底行模式(执行复杂命令),通过快捷键可快速切换。常用功能包括:光标移动(h/j/k/l)、复制粘贴(yy/p)、撤销(u)、查找替换(/)等。用户可通过.vimrc文件自定义配置,如显示行号(set nu)或安装插件增强功能。Vim特别适合编程和服务器环境,通过熟练使用其命令组合可显著提升文本编辑效率。

2025-10-09 00:45:00 918

原创 【Linux】基础开发工具---yum / apt

隶属专栏🌈🌈写作日期✏️ 2025年10月6号✏️。

2025-10-06 14:23:43 959 3

原创 Linux权限管理全解析

《Linux权限管理全解析》摘要(149字) 本文系统讲解了Linux权限机制,涵盖用户角色(root/普通用户)、文件权限(rwx)及目录权限管理。核心内容包括:权限=角色+属性,通过chmod/chown命令修改权限属性与归属;umask掩码对默认权限的影响;目录可执行权限的特殊性;以及粘滞位(t)在共享目录中的安全防护作用。文章强调权限管理的本质是控制用户行为,重点分析了root特权、权限匹配规则和文件删除权限的目录依赖性,为Linux系统安全操作提供了全面指导。

2025-10-04 17:18:37 840

原创 Linux入门指南:从零掌握基础指令

本文介绍了Linux操作系统的基本概念和常用指令。Linux由林纳斯·托瓦兹于1991年创建,采用开源模式。文章详细讲解了20多个常用Linux指令,如mkdir、ls、cd、rm等文件操作指令,以及grep、find等文本处理指令。同时介绍了重定向、管道等高级功能,并解释了shell的工作原理。文章还比较了开源和闭源系统的区别,强调了Linux文件系统的树形结构特点。通过具体示例演示了各指令的实际应用,帮助读者快速掌握Linux基础操作。

2025-09-30 17:29:16 890

原创 【C++】string类的常见接口的使用

本文是一篇关于C++中string类的详细指南,主要介绍了string类的常见接口使用方法。文章首先介绍了string的基本概念和构造函数,然后详细讲解了容量接口、遍历元素的方法(包括operator[]、迭代器和范围for循环),以及与字符串修改相关的操作(如append、erase等)。此外,还探讨了查找功能、c_str()转换和substr截取等实用接口。文章通过代码示例展示了不同编译器的扩容机制差异,并提供了性能优化建议。最后介绍了string类的非成员函数,如operator+和getline。本

2025-09-27 23:17:41 1045

原创 【C++】初识模板

本文介绍了C++中的泛型编程和模板机制。主要内容包括: 函数模板的原理与使用,通过模板实现通用交换函数,解决代码复用问题; 模板实例化的两种方式:隐式实例化和显式实例化; 类模板的定义与实现,以栈类为例展示类模板的应用; 模板声明与定义分离时的注意事项。文章通过生动的类比和代码示例,解释了模板如何提高代码复用率和可维护性,是C++泛型编程的重要基础。

2025-09-21 15:26:44 1114 2

原创 探秘C++内存管理与new/delete原理

本文系统介绍了C/C++内存管理机制。首先分析了内存分布(栈区、堆区、数据段、代码段)并通过代码示例说明变量存储位置。重点讲解了C++的new/delete操作符:对于内置类型类似malloc/free;对自定义类型会调用构造/析构函数,并比较了C与C++实现链表的差异。详细解析了operator new/delete底层实现原理,强调new/delete必须匹配使用。最后对比了malloc/free与new/delete的区别:new/delete是操作符,支持初始化、自动调用构造/析构函数,失败时抛异常

2025-09-20 14:24:15 803

原创 C++构造函数与static成员深度解析

本文深入探讨了C++中构造函数与static成员的核心概念。在构造函数部分,详细解析了初始化列表的特性与使用场景,强调const成员、引用成员和没有默认构造的类成员必须在初始化列表初始化。static成员章节重点阐述了静态成员变量和函数的共享特性、生命周期及访问方式,并通过编程实例展示了静态成员的实用价值。文章还涉及类型转换、友元关系、内部类等进阶内容,结合代码示例分析了编译器对对象拷贝的优化策略。全文内容丰富,层次清晰,既包含基础理论讲解,又提供实际应用案例,适合C++学习者系统掌握相关知识点。

2025-09-14 23:22:39 1038 1

原创 【C++】日期类运算符重载实战

本文介绍了在C++中实现日期计算器的完整过程,重点讲解了运算符重载技术。文章从日期类框架搭建开始,详细说明了如何重载+、-、+=、-=等算术运算符,以及关系运算符、前后置++/--等操作。特别说明了日期相减功能和流操作符(<<、>>)重载的实现技巧,并提供了完整的源码实现。通过这个案例,读者可以学习到如何通过运算符重载使自定义类型支持内置类型般的操作,同时掌握日期处理中的进位/借位逻辑判断。文章强调代码复用和效率优化,展示了C++面向对象编程的实践应用。

2025-09-12 20:14:27 969

原创 类的六大默认成员函数解析(超详细)

摘要: 本文详细介绍了C++类的六大默认成员函数,重点分析了构造函数、析构函数、拷贝构造函数和赋值运算符重载的核心特性与实现要点。通过Stack和Date类实例,阐述了构造函数初始化对象、析构函数资源清理、拷贝构造的深浅拷贝区别,以及赋值重载的连续赋值特性。文章强调对于涉及资源管理的类必须显式实现析构函数、拷贝构造和赋值重载,以避免内存问题。同时简要说明了const成员函数和取地址重载的应用场景,为理解C++类的核心机制提供了系统性的指导。全文结合代码示例,深入浅出地解析了各类成员函数的使用场景和注意事项。

2025-09-11 11:49:46 705

原创 C++类的奥秘:从结构体到this指针

本文主要介绍了C++中类的概念及相关特性。首先通过对比C语言结构体,阐述了类的定义方式及其特点,包括成员变量和成员函数的封装。其次讲解了访问限定符的作用和类域的概念,说明成员函数的声明与定义分离方法。接着详细介绍了类的实例化过程,分析了类对象大小的计算规则(与结构体类似但不包含成员函数),并指出空类占用1字节的特殊情况。最后重点解析了this指针的原理,说明它是成员函数的隐藏参数,通过寄存器传递当前对象地址,并分析了this指针为空时的特殊情况。全文通过代码示例和底层汇编分析,深入浅出地讲解了C++类的核心

2025-09-08 19:33:24 1019

原创 C++改进C语言的七大方面

C++在兼容C语言的基础上进行了多项重要改进。针对C语言在大型项目中的不足,C++引入了命名空间(namespace)解决全局变量冲突问题,支持嵌套定义和多文件合并。通过cin/cout简化输入输出,支持自动类型识别。新增了缺省参数、函数重载等特性,提高了代码灵活性。引用(reference)机制作为指针的补充,简化了参数传递和返回值处理。内联函数(inline)取代了易错的宏定义,nullptr关键字解决了NULL的二义性问题。这些改进使C++成为更强大、安全的面向对象编程语言,适用于大型项目开发。

2025-09-07 14:26:53 1024

原创 深入理解数据结构:栈与队列详解

本文详细介绍了栈和队列两种数据结构的概念、实现原理及完整代码。栈是一种遵循后进先出(LIFO)原则的线性表,使用数组实现更优,包含初始化、入栈、出栈等基本操作。队列则是先进先出(FIFO)的线性表,更适合用链表实现,文中给出了队列节点结构体设计及入队、出队等关键操作。两种数据结构均提供了完整的C语言实现代码(Stack.h/Stack.c和Queue.h/Queue.c),包括初始化、销毁、数据操作等功能函数,并通过测试用例演示了具体使用方法。文章最后附有完整项目代码,可供读者参考实现。

2025-09-06 20:09:07 598

原创 【数据结构】单链表

本文介绍了单链表的基本概念、实现方法及其与顺序表的区别。单链表通过节点指针实现逻辑上的连续性,能有效解决顺序表中插入效率低、空间浪费等问题。文章详细讲解了单链表的创建、初始化、增删查改等操作,重点分析了尾插、头插、尾删、头删等关键操作的实现逻辑,并强调了二级指针在修改头指针时的重要性。同时提供了单链表的完整实现代码,包括节点创建、链表打印、查找、插入删除等函数。最后总结了链表的特性,指出链表操作需要注意指针传递和内存管理问题。通过火车车厢的类比,帮助读者理解链表节点间的连接原理。

2025-07-25 15:37:10 747

原创 【数据结构】顺序表

线性表是n个具有的数据元素的有限序列。它是一种广泛使用的数据结构。常见的数据结构:顺序表、链表、栈、队列、字符串...线性表在,也就说是连续的一条直线,比如:我们在商场买东西要排队结账,那长长的队伍就是线性的,当然,有时候队伍不是一条直线,歪歪扭扭的,我们人为的把它抽象成线性的。但是,在顺序表在物理结构上连续,链表在物理结构上不连续。顺序表顺序表底层就是数组,只不过它比数组更高级了。

2025-07-24 12:17:43 1188

原创 C语言--移位操作符和位操作符应用

C语言中有很多操作符,可能初学者对移位操作符和位操作符不是太了解,但是在嵌入式开发中对移位操作符和位操作符的应用非常多。所以本博客主要讲解移位操作符和位操作符的编程应用。移位操作符和位操作符的使用,可以让一些问题变得非常简便。但是有时候并不容易想到,只要我们勤于练习,定能把它使用的游刃有余。

2025-05-31 17:51:12 919

原创 C语言--表达式求值详解

这部分知识很多C语言书上都没有,但是这部分知识同样很重要,能让我们更好的理解C语言。我们知道计算表达式的时候会遵循计算规则,比如:在计算3+5*2的时候,先算乘法再算加法。同样在C语言中也有计算规则,它是由操作符的属性决定的。优先级和结合性。比如:我们用C语言写代码去计算:3+4*5由于乘法的优先级⾼于加法,所以会先计算 4 * 5 ,⽽不是先计算 3 + 4。但是对于用C语言写代码去计算: 5 * 6 / 2两个运算符优先级相同了,这时候就要看结合性。

2025-05-27 15:42:14 1104

原创 C语言--二分查找

一定要注意二分查找的使用前提是有序数组的查找;不是有数组就不适用了。如果我们对二分查找不熟悉,我们在写代码前,先画图分析一下,再去用代码实现,这样可以避免很多因为粗心而犯错,会起到事半功倍的效果。如果本博客对你有一点帮助,请帮我点一个赞呗~

2025-05-26 23:41:25 1036

原创 C语言—函数递归经典问题

本博客讲解几个递归经典问题,包括递归的效率问题、汉诺塔问题、青蛙跳台阶问题。以帮助你更好的理解并使用递归。那么何为递归呢?递归就是函数自己调用自己。其中递就是递推归就是回归的意思。接下来慢慢体会。总之,有些问题想到递归效率很高,但有些题目递归效率很低,还要注意递归层次太深,会浪费大多的栈帧空间,可能会引起栈溢出的问题。最后,使用递归应适可而止,还是那就话:递归只应天上有,迭代凡人用得欢。

2025-05-19 14:45:07 1045

原创 C语言——手把手带你实现扫雷游戏(基础版)

本博客。本游戏使用分文件编写,也可以不分文件编写,但是对于大型项目来说,,一虽然分文件编写对于初学者较为困难,但是我们也要逐步适应这种方式。

2025-05-13 19:35:24 789

原创 C语言--分支和循环中的易混点

这就是因为else总是跟最接近的if匹配,这样第二个if-else语句是嵌套在第一个if语句中的,如果第一个if语句不成立,嵌套的if-else就没机会执行了,最终啥也不打印,如果想要打印出“祝祖国:繁荣昌盛”的效果,加上大括号{},形成代码块,就好理解了,在这段程序中,本来for循环提前退出得使用break,一个break只能跳出一层for循环,如果想要跳出3层for循环就得使用3次for循环,所以在这里,我们使用goto语句就十分方便了。本文有写的不好的地方,恳请谅解,同时欢迎大家的指正!

2025-05-09 00:24:26 641 1

空空如也

空空如也

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

TA关注的人

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