自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 auto、范围 for 与 string 类模拟实现

本文主要介绍了C++11中的auto关键字和范围for循环特性,以及string类的模拟实现。auto关键字从自动存储类型指示符变为类型自动推导,简化了复杂类型的书写,但需注意使用规则和限制场景。范围for循环简化了集合遍历,会自动处理迭代过程。文章随后详细展示了string类的模拟实现,包括构造函数、赋值运算符重载、插入删除等常用功能,通过传统和现代两种写法对比,说明了代码优化的思路。整体结构清晰,代码示例丰富,将语言新特性与实际应用相结合。

2025-11-11 18:36:41 686

原创 C++ new/delete操作符与模板初阶

本文系统解析C++核心内存管理机制new/delete操作符及其底层实现原理。通过对比malloc/free,详细阐述new/delete在内置类型和自定义类型中的差异化行为,特别是自动调用构造/析构函数的智能化特性。深入剖析operator new/delete基于malloc/free的封装机制,揭示异常处理和内存不足应对策略。同时全面介绍模板编程基础,涵盖函数模板原理、实例化方式和类模板应用,展示泛型编程如何提升代码复用性。

2025-09-25 20:25:41 699

原创 C++类与对象(下)

本文深入探讨C++构造函数的初始化列表机制,介绍了其语法规则和必须使用初始化列表的三种特殊情况(引用成员、const成员、无默认构造的类成员)。同时讲解了C++11成员缺省值特性及其与初始化列表的优先级关系,强调了成员初始化顺序严格遵循声明顺序而非初始化列表书写顺序。此外,文章还详细解析了类型转换、static成员和友元机制,包括静态成员变量的初始化要求、静态成员函数特性,以及友元函数和友元类的定义规则及其访问权限的特殊性。这些特性既提供了编程便利性,也需要注意其对封装性的影响。

2025-09-17 18:28:02 822 1

原创 C++类与对象(中):六个默认成员函数

本文介绍了C++中默认成员函数的分类与特性,重点分析了构造函数、析构函数和拷贝构造函数的核心功能与使用场景。构造函数负责对象初始化而非内存分配,支持重载和默认参数;析构函数用于资源清理,管理动态内存的类必须自定义析构;拷贝构造函数通过引用参数实现对象拷贝,资源管理类需自定义深拷贝。编译器对内置类型执行浅拷贝,对自定义类型调用其对应成员函数。理解这些函数的默认行为和自定义实现时机,对正确设计类至关重要。

2025-09-17 15:24:21 907

原创 C++类与对象(上)

C++类定义通过class关键字实现,类成员包括变量(属性)和方法(函数),访问权限由public/private控制。与C结构体不同,类支持封装和函数定义。类实例化时仅分配成员变量内存,成员函数被所有对象共享。this指针隐式传递对象地址,使方法能区分不同实例。类域概念要求外部定义成员函数时使用::指明所属类。类作为抽象设计图,实例化后才创建具体对象并分配存储空间。

2025-07-14 11:38:46 991 66

原创 深入解析C++引用:从别名机制到函数特性实践

本文系统解析C++四大核心特性。引用机制作为核心,深入剖析其别名本质、必须初始化与不可重绑定特性,通过Swap函数等案例展示传参优势,结合const引用阐明权限控制原理,并与指针进行多维对比。缺省参数部分详解全缺省与半缺省规则,强调声明定义分离时的注意事项。函数重载阐明三种实现路径(类型/数量/顺序差异),揭示返回值差异的无效性,并预警与缺省参数结合的二义性风险。内联函数通过Add案例对比宏函数,凸显其类型安全与调试优势,给出适用场景建议。全文贯穿代码实例与内存分析,助力开发者掌握底层原理与实践技巧。

2025-06-03 20:47:55 1503 91

原创 C++命名空间深度解析

本文介绍了C++中命名空间的概念及其使用方法。命名空间(namespace)用于解决C/C++中的名称冲突问题,通过将变量、函数和类等标识符进行本地化隔离。文章通过代码示例展示了命名空间的定义、嵌套定义以及在不同文件中定义同名命名空间的特性。此外,还讲解了三种使用命名空间的方式:指定命名空间访问、展开单个成员和展开整个命名空间,并指出不同场景下的推荐用法。标准库std命名空间的使用也被提及。命名空间通过域隔离有效解决了标识符命名冲突问题,是C++中重要的编程工具。

2025-06-01 22:27:45 1487 81

原创 七大排序算法深度解析:从原理到代码实现

本文系统讲解了计算机科学中七大经典排序算法,涵盖插入排序、希尔排序、选择排序、堆排序、交换排序(冒泡与快速排序)、归并排序及计数排序。通过动态示意图直观展示算法流程,结合详细注释的C语言代码剖析实现细节,并针对快速排序提出五种经典变体(Hoare法、挖坑法、前后指针法、非递归实现、三路划分)。

2025-05-24 21:20:19 2807 93

原创 深入理解二叉树:遍历、存储与算法实现

本文全面解析二叉树数据结构,涵盖基础概念、存储方式与核心算法。从树形术语解析切入,对比顺序存储与链式存储的特性差异。重点剖析堆结构实现,通过时间复杂度论证向下调整建堆(O(n))相比向上调整(O(n logn))的效率优势,并给出堆排序完整实现方案。针对海量数据场景,设计小根堆策略高效解决TOP-K问题。链式结构部分系统阐释四种遍历方法,结合队列创新实现层序遍历。提供节点统计、深度计算等六类工具函数实现,强调递归逻辑与内存安全管理。

2025-05-16 18:48:59 1634 99

原创 数据结构中的栈与队列:原理、实现与应用

栈和队列是计算机科学中两种基础的线性数据结构,分别遵循LIFO(后进先出)和FIFO(先进先出)原则。栈的操作集中在栈顶,常用于递归、表达式求值等场景;队列则通过队尾插入、队首删除,适用于任务调度、缓冲区管理等。本文详细介绍了栈和队列的基本定义、核心机制及实现方式,包括动态数组、链表等。通过C语言代码示例,展示了如何实现自动扩容栈和链式队列,并提供了测试用例。此外,文章还探讨了栈与队列在算法题中的应用,如有效的括号、用队列实现栈等,帮助读者深入理解这两种数据结构的实际应用。

2025-05-10 20:31:03 1796 87

原创 手撕代码:单链表十大核心问题解析

本文梳理了10个经典单链表算法题,涵盖从基础操作到高阶技巧的完整知识链。在这里你可以学到:链表反转的迭代实现,快慢指针的巧妙应用(环检测、中间节点定位),链表合并与排序的高效策略,相交链表、环入口等问题的数学推导,深拷贝带随机指针链表的O(1)空间解法。现在,让我们一起揭开单链表算法的核心秘密!

2025-05-07 21:35:57 795 71

原创 链表数据结构全解析:从单链表到双向循环链表

本文针对顺序表在插入删除效率低、扩容成本高及空间浪费等问题,提出链表作为解决方案。链表通过非连续存储和指针链接实现动态数据管理,主要分为单链表与双向循环链表两类:单链表结点含数据域和单向指针,头部操作高效但尾部需遍历;双向链表通过头结点、循环结构和双向指针优化边界处理,支持任意位置O(1)插入删除。实际开发中,无头单向非循环链表多用于子结构(如哈希桶),而带头双向循环链表因对称操作优势成为主流数据存储方案。

2025-05-06 12:57:05 1119 78

原创 数据结构入门:详解顺序表的实现与操作

顺序表是⽤⼀段物理地址连续的存储单元依次存储数据元素的线性结构,⼀般情况下采⽤数组存储。

2025-04-29 20:20:05 2140 80

原创 算法效率的钥匙:从大O看复杂度计算

数据结构是什么,它对我们有什么用处,我们为什么要学习它?抱着这样的疑问,我们先来介绍数据结构的概念。数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在⼀种或多种特定关系的数据元素的集合。没有⼀种单⼀的数据结构对所有用途都有用,所以我们要学各式各样的数据结构,如:线性表、树、图、哈希等数据结构,数据与结构,其实就是各种数据结合形成了不同的结构,数据本身是离散的、无组织的,而通过不同的结构设计,我们可以将数据以特定方式组织起来,从而实现高效的存储、访问和操作。

2025-04-27 12:04:24 1808 68

原创 #define的奇妙世界:C语言预处理核心技术入门

C 语言提供了一组以双下划线开头和结尾的预定义符号,这些符号在预处理阶段会被自动替换为编译环境的实时信息,堪称调试和日志记录的利器:

2025-04-25 14:05:00 959 66

原创 GCC工作流程揭秘:C程序如何变成可执行文件

今天我们要来学习一个C语言程序是如何一步步变成一个可执行程序的,它会经历一些什么变化,使用什么语句来使它发生反应变化呢?快来一起学习吧!!!

2025-04-24 16:57:35 900 53

原创 C语言文件操作完全手册:读写·定位·实战

文件(File)是计算机中用于持久化存储数据的基本单位。它可以存储文本、图片、音频、程序代码等各种信息,并在程序运行结束后仍然保留数据。

2025-04-22 19:25:55 1169 71

原创 从malloc到free:动态内存管理全解析

int i;int arr[];柔性数组的特点:• 结构中的柔性数组成员前⾯必须⾄少存在⼀个其他成员。• sizeof 返回的这种结构⼤⼩不包括柔性数组的内存。• 包含柔性数组成员的结构⽤malloc ()函数进⾏内存的动态分配,并且分配的内存应该⼤于结构的⼤⼩,以适应柔性数组的预期⼤⼩。栈区(stack):在执⾏函数时,函数内局部变量的存储单元都可以在栈上创建,函数执⾏结束时 这些存储单元⾃动被释放。栈内存分配运算内置于处理器的指令集中,效率很⾼,但是分配的内 存容量有限。

2025-04-20 21:00:00 5163 43

原创 C 语言联合与枚举:自定义类型的核心解析

上篇博客中,我们通过学习了解了C语言中一种自定义类型结构体的相关知识,那么该语言中是否还拥有相似的自定义类型呢?这将是我们今天学习的目标。

2025-04-19 21:30:00 2277 47

原创 C语言超详细结构体知识

本文主要介绍了结构体的基本使用,包括创建,声明,初始化,访问操作等,以及结构体如何在内存中进行存储,结构体传参方法优劣,结构体实现位段等知识。

2025-04-18 21:00:00 2146 42

原创 内存编码手册:整数与浮点数的二进制世界

本文介绍了整数与浮点数在内存中的存储方式,并有诸多例题讲解。

2025-04-17 18:42:06 1497 53

原创 冒泡与 qsort 排序策略集

今天我们要学习两种排序方法,分别是冒泡排序和qsort函数排序,冒泡排序相对qsort函数排序要简单一点,更易于理解。

2025-04-16 09:00:00 6021 45

原创 C语言超详细指针知识(三)

本文主要介绍了字符指针,数组指针,二维数组传参,函数指针变量,回调函数等知识,欢迎大家学习。

2025-04-14 17:00:00 2921 43

原创 C语言超详细指针知识(二)

本文介绍了指针的传址调用,数组名的指针知识,使用指针访问数组,一维数组传参的本质,二级指针,指针数组,欢迎大家学习。

2025-04-12 16:10:30 1266 31

原创 C语言超详细指针知识(一)

通过前面一段学习C语言的学习,我们了解了数组,函数,操作符等相关知识,今天我们将要进行指针学习,这是C语言中较难的一个部分,我将带你由浅入深慢慢学习。

2025-04-11 20:48:53 1196 28

原创 操作符详细解析(二)

上篇文章我们介绍了二进制,移位操作符,位操作符的相关知识,今天我们将继续学习操作符相关的知识。

2025-04-10 20:10:42 1143 15

原创 操作符详细解析(一)

学习编程语言,我们经常能听到2进制,8进制,10进制(日常生活使用的),16进制的说法,那具体是什么意思呢?其实它们是数值的不同表现形式。比如我们拿10进制15来举例:15的2进制是:111115的8进制是:1715的10进制是:1515的16进制是:F我们今天重点要介绍的是二进制:2进制满足满2进1(参考十进制满十上升一位)2进制的数字每一位都是0~1的数字组成,不会有其它数字比如二进制0001代表十进制1,二进制0010代表十进制2。

2025-04-10 16:59:11 1184 12

原创 C语言递归知识简述

我们在C语言的学习中,总是绕不开递归,那么递归究竟是什么呢?递归其实是一种解决问题的办法,上述这个简易的递归只是为了演示递归的基本形式,其实代码最终会陷入死递归,导致栈溢出。错误如下:这也警惕我们,把⼀个大型复杂问题层层转化为⼀个与原问题相似,但规模较小的子问题来求解;直到子问题不能再被拆分,递归就结束了。所以递归的思考方式就是把大事化小的过程。递归中的递就是递推的意思,归就是回归的意思。

2025-04-09 20:35:09 1135 13

原创 C语言超详细函数知识

了解了库函数,我们的关注度应该聚焦在⾃定义函数上,⾃定义函数其实更加重要,也能给程序员写代码更多的创造性。自定义函数的语法形式:ret_type fun_name(形式参数)•ret_type是⽤来表⽰函数计算结果的类型,有时候返回类型可以是void,表示什么都不返回。•fun_name是为了⽅便使⽤函数;就像⼈的名字⼀样,有了名字⽅便称呼,函数有了名字⽅便调用,所以函数名尽量要根据函数的功能起的有意义。•函数的参数。

2024-04-22 19:12:15 2249 17

原创 C语言数组知识简述

数组在程序设计中是一个十分重要的概念,在许多语言中都有涉及到,今天我们要学习的是跟C语言有关的数组知识。1. 数组概念数组是一组相同类型元素的集合。从这个概念中我们可以观察到俩点有价值的信息:1.数组中存放的是一个或多个数据,但是数组元素个数不能为零。2.数组中存放的每个数据类型必须是相同的。数组分为一维数组和多维数组,今天我们要学习的是一维数组和二维数组。这也是最常见的俩种数组。2. 一维数组2.1 一维数组的创建存放在数组的值被称为数组的元素,数组在创建的

2024-04-19 21:25:26 2238 11

原创 C语言猜数字小游戏

学会了c语言分支循环的知识后,我们可以实现一些比较简单的小程序了。猜数字小游戏游戏要求:1.电脑⾃动⽣成1~100的随机数2.玩家猜数字,猜数字的过程中,根据猜测数据的⼤⼩给出⼤了或⼩了的反馈,直到猜对,游戏结束。

2024-04-17 20:18:53 1938 15

原创 C语言分支循环语句

c语言是一种结构化的程序设计语言,这里的结构是指和。我们可以使⽤ifswitch实现分⽀结构,使⽤forwhiledo while实现循环结构。

2024-04-16 20:15:38 1064 14

空空如也

空空如也

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

TA关注的人

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