自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++初阶】:(5)内存管理

函数初始化内存调整典型场景malloc不初始化不支持快速申请未初始化内存calloc初始化为0不支持申请需初始化的内存(数组清零)realloc依赖原内存支持动态调整内存大小(扩容/缩容)free无无释放动态分配的内存class Apublic::_a1(a1)if (this!delete p2;return 0;

2026-03-27 20:37:26 418

原创 【C++初级】:(4)C++基础类和对象(下)

之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值,构造函数初始化还有一个方法,就是初始化列表,初始化列表的使用放肆是以一个冒号开始吗,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的。每个成员变量在初始化列表中只能出现一次,语法理解上初始化列表可以认为是每个成员变量定义初始化的地方。必须4.C++11支持在成员变量声明的位置给缺省值,这个缺省值主要是给没有显示在初始化列表初始化的成员使用的。

2026-03-16 23:49:02 352

原创 【C++初阶】:(3)C++基础类和对象(中)

下面对比一下⽤C++和C实现的Stack解决之前括号匹配问题is Valid,我们发现有了构造函数和析构函数确实方便了很多,不会再忘记调⽤Init和Destory函数了,也方便了不少。

2026-03-08 19:55:10 336 2

原创 【C++初阶】:(2)C++基础类和对象(上)

函数指针是一个地址,调用函数被编译成汇编指令call[地址],其实编译器在编译链接时,不是在运行的时候去找函数地址,只有动态多态的时候才会在运行时找,这种情况就需要对函数指针进行存储,后面会详细进行学习。上面的程序运行后,发现不包含成员变量的B和C类对象的大小为1,为什么没有成员变量还要给1个字节呢?,但是成员函数是否包含呢?首先函数被编译后是一段指令,在对象中无法存储,这些指令存储在一个单独的区域(代码段),那么。C++面向对象的三大特性:封装,继承,多态,下面给出的对比可以了解一下封装的好处。

2026-03-02 14:20:35 738

原创 【c++初阶】:(1)c++入门基础知识

定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以下⾯的rand不再冲突了。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。

2026-02-17 21:29:18 1393

原创 数据结构学习篇(12)---排序

元素集合越接近有序,直接插入排序算法的时间效率越高时间复杂度:O(N^2)空间复杂度:O(1),它是一种稳定的排序算法稳定性:稳定希尔排序是对直接插入排序的优化。当gap > 1时都是预排序,目的是让数组更接近于有序。当gap == 1时,数组已经接近有序的了,这样就会很快。这样整体而言,可以达到优化的效果。我们实现后可以进行性能测试的对比。

2026-02-07 20:29:04 646

原创 数据结构学习篇(11)---二叉树剩余知识点补充

对于二叉树的内容,还剩下一点没有进行补充,所以在这节中对剩下的内容进行补充。

2026-01-19 23:08:56 541

原创 数据结构学习篇(10)--- 二叉树基础oj练习

代码实现:2. 检查两棵树是否相代码实现:3. 对称二叉树代码实现:4. 判断一颗树是否和另一棵树的子树相同代码实现:5. 前序遍历代码实现:6. 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树代码实现:注:千万不能够写代码中的错误示范,因为如果那样写的话,当一个字符在进行判断时,假如不满足判断的条件语句,那i就会自动加1到下一个字符,这就导致原先的字符还没有被正确操作就被略过了,这是一个经典的错误!

2026-01-17 23:50:32 599 1

原创 数据结构学习篇(9)---二叉树

对于求个数的问题,首先想到的一定是首先设置变量size,然后遍历每个元素size加1,直到遍历完所有元素。//计算二叉树总结点个数(方法1,不可取)return 0;elsesize++;//计算二叉树总结点个数(方法1改进,还是有弊端)//改进之处return 0;elsesize++;注:对于改进后的代码,其实还是存在弊端,因为静态局部变量只能进行一次初始化。

2026-01-16 16:55:13 613

原创 数据结构学习篇(8)---二叉树

堆的本质是数组,所所以需要在堆中包含一个数组,数组元素个数以及空间个数。int size;}HP;

2026-01-01 18:55:51 978

原创 数据结构学习篇(7)---队列

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out)。队列和栈是有所不同的,比如入栈顺序是1 2 3 4,但是出栈顺序可以有多种,不一定是 1 2 3 4,因为它可以边进边出,所以是一个一对多的关系;而队列的入队列顺序和出队列顺序是一样的,是一个一对一的关系,正是基于队列的这种性质,它可以用于保持公平性(例如做一个抽号机:比如吃饭排队拿取号码,先来的先拿,后来的后拿)。也可以利用队列来做一个好友推荐(广度优先遍历)

2025-12-22 17:23:38 748

原创 数据结构学习篇(6)---栈

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。栈中的数据元素遵守LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。

2025-12-19 21:38:27 853

原创 数据结构学习篇(5)---顺序表和链表的区别

对于两者在插入数据方面,链表是优于顺序表的,因为顺序表在进行扩容操作时,往往是按照原来容量的两倍进行操作,这就可能会导致空间过剩或空间不足,而当空间不足时又要进行下一次的空间扩容,这对时间和空间都会造成损耗,相对于链表而言就没有这一说,想要进行数据增加只需要增加相应节点即可,时间上得到了保证同时空间也不会产生浪费。

2025-12-17 18:38:12 193

原创 数据结构学习篇(4)---算法的复杂度

由于现在计算机的储存在硬件上能得到很好的解决,所以时间复杂度较空间复杂度更受关注。

2025-12-14 21:34:51 625 2

原创 数据结构学习篇(3)---双向链表

双向链表包含这几部分:头结点(哨兵位)、存储的数据,指向下一个节点的指针以及指向上一个节点的指针。

2025-12-07 16:39:42 1406 1

原创 数据结构学习篇(2)---单向链表

链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。简单来说:链表在物理结构上是不连续的,在逻辑结构上是连续的;而顺序表的物理结构和逻辑结构都是连续的。

2025-12-03 23:10:54 813 2

原创 数据结构学习篇(1)---顺序表概念及结构

线性表是n个具有相同特性的数据元素的有限序列;常见的线性表有:顺序表,链表,栈,队列,字符串等等。上文提到的相同特性包括两个:物理结构和逻辑结构;线性表在逻辑上是线性结构,可以抽象理解为是一条连续的直线,但在物理结构上是不一定连续的。

2025-11-29 16:53:46 631

原创 C语言-文件操作

磁盘(硬盘)上的文件是文件。但是在程序设计中,我们⼀般谈的文件有两种:程序文件、数据文件(从文件功能的⻆度来分类 )。注:此处的输入输出是针对程序而言,对于程序读文件就是输入,写文件就是输出。

2025-11-23 18:44:33 1311

原创 详细讲解:c语言中的动态内存管理

如果每次想要存储一个数据,都通过机器申请固定的空间来进行存储,那么有时就会造成申请的空间不足或者过剩,这时就需要进行动态内存分配,所以在c和c++中,程序员有权利自己申请和释放空间,这样一来就比较灵活了。想要进行动态内存分配,首先需要将四个函数玩明白:malloc,free,calloc,realloc。

2025-11-15 20:02:45 819

原创 带你认识什么是:联合体+枚举?

本文介绍了C语言中联合体(union)和枚举(enum)的特性与应用。联合体是一种特殊的数据类型,其成员共享同一内存空间,大小至少为最大成员的大小,且需考虑内存对齐。通过实际代码演示了联合体的声明、特点及与结构体的区别,并给出了判断机器字节序的巧妙应用案例。枚举部分则阐述了其声明方式、默认值规则及优点,包括增强代码可读性、类型检查严格、便于调试等特性。文章通过对比#define宏定义,突出了枚举在类型安全和调试方面的优势,同时说明了枚举在不同编程语言中的使用差异。

2025-11-15 13:49:59 626

原创 c语言——结构体(完整版)

介绍c语言中的结构体知识点

2025-11-11 21:32:38 1262

原创 数据在内存中的存储——浮点型数据(通俗易懂版)

摘要:本文详细介绍了浮点数在内存中的存储方式。根据IEEE 754标准,浮点数由符号位(S)、有效数字(M)和指数(E)三部分组成。32位浮点数中,S占1位,E占8位,M占23位。M存储时舍去首位的1以提高精度,E存储时需加上127(32位)或1023(64位)的偏移量。通过代码实例展示了整数和浮点数存储方式的差异,说明必须按相同方式存储和读取数据才能保证正确性。文章还解析了E全0和全1时的特殊处理规则,并演示了浮点数精度限制带来的存储误差问题。

2025-11-07 19:30:23 1184

空空如也

空空如也

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

TA关注的人

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