自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++的魔法世界:类和对象的终章

详细介绍,C++类和对象中初始化列表、隐式类型转换、匿名对象等相关知识

2024-10-16 19:20:14 1279 69

原创 谈对象第二弹: C++类和对象(中)

2w字讲解类和对象的6大默认构造函数

2024-09-20 16:13:26 1224 82

原创 谈对象系列:C++类和对象

详细讲解定义类、类成员函数、类域、结构体在C++中的改变、计算类大小、this指针,附赠两道小考题

2024-08-10 00:03:41 1377 80

原创 自定义类型:结构体

详细介绍结构体的声明、定义,如何计算结构体大小,内存对齐规则,结构体实现位段的功能等

2024-08-09 23:18:28 994 61

原创 C++ 初探:不要‘下次一定’,立即开始你的C++之旅

C++初识,讲解C++的输入输入,以及C++对C语言上语法不足增加的语法快,缺省参数、函数重载、引用、inline、nullptr

2024-08-04 17:39:15 2200 79

原创 手搓交换排序、归并排序、计数排序

不同于hoare版本的找基准值,通过挖坑法,在循环里,当left == right就直接跳出,hoare版本的left和right相等时需要判断,当前它们所指的值比基准值大还是小,而挖坑法就不需要考虑,left和right相等时,同时指向的位置是一个坑,坑内不存在有效数据,最后直接将基准值填坑即可。先根据最大值最小值的差值开辟空间,若是根据最大值开辟,当最大值为109万,最小值为100,一共有10个数据,此时根据最大值直接开辟空间会很浪费,109个整形大小的空间,只用来存放10个数据。

2024-08-02 15:52:55 2284 65

原创 手搓排序算法:插入排序、选择排序

详解插入排序算法,直接插入排序、希尔排序和选择排序算法,直接选择排序、堆排序

2024-07-28 11:02:31 2122 72

原创 详解数据结构之二叉树(二叉链,使用递归)

详细说明二叉链的创建与销毁,如何遍历二叉树的4种办法,前序遍历、中序遍历、后序遍历、层序遍历,以及如何处理节点与节点之间的关系

2024-07-25 22:10:41 2715 63

原创 详解数据结构之二叉树(堆)

如图:这两颗树就不是树形结构,根节点父节点:若一个节点含有子节点,则称这个节点为字节的的父节点,如图9为12个父节点。子节点/孩子节点:一个节点含有父节点那这个节点就为孩子节点,如图12.节点的度:一个节点右多少个孩子节点那他的度就为多少。树的层次:从根开始定义为第一层,根节点的子节点为第二层,以此类推。树的深度、高度:树的最大层次,如图,树最大有4层,那树的深度为4。叶子节点:度为0的节点为叶子节点。分支节点:度不为0的节点。兄弟节点:具有相同父节点的节点互称为兄弟节点。

2024-07-22 19:33:56 2693 55

原创 详解数据结构之队列、循环队列(源码)

队列属于线性表队列:就好比如,我们在排队买东西时排队,第一个先来的第一个买,最后一个到的最后一个买,这里的队列也是满足先进先出,后进后出的规律(First In First Out),允许插入数据的一端叫做队头简称入队列,允许删除数据的一端叫做队尾简称出队列。队列的存储形式:顺序存储结构,实现循环队列 ,队列长度时固定的链式存储结构,实现不循环队列,队列长度理论上是无限大的。

2024-07-20 21:38:29 1628 36

原创 数据结构:栈

满足栈的特性,只有先进后出的特性,不能遍历,也就不能遍历打印,也不能随机访问。

2024-07-19 15:12:46 1646 29

原创 数据结构之双向链表(赋源码)

总的来说,在实现双链表的算法时,在插入和删除上优先考虑的是插入一个节点会影响到那些节点、删除一个节点又会影响到那些节点,以及被影响节点的指针的指向。这里最好画图加以理解。在插入、删除、查找等功能里均使用assert断言,这样做的目的是提高函数的健壮性、而不是在传递空指针时函数无法解决而产生一系列未知异常的情况。还强调了在实现函数功能是统一双链表的一致性、这样虽然保证了所有函数传递的都是一级指针,但不可否认的是这样又会丢失一些功能,需要手动去实现,如传递一级指针,将一个双链表销毁后需要手动置空。

2024-07-17 22:58:15 1778 34

原创 内存函数(C语言)

这不是一个使用的案例,通过运行代码能够发现数组arr1和arr2的结果相当的大,这是因为memset是在字节上设置内容,这里的第一条memset语句,将数组arr2里的五个字节内容,都放置了一个数字9,而内存里的 09 09 09 09实际上是16进制数,0x09090909,所以在打印的结果上会很大。,其代码内讲多块内容合并在一起操作,通过控制num大小,来控制了dest和src偏移的位置,而循环结束的条件的num为0,这样就有了一条很精简的代码。

2024-07-15 16:17:03 1962 25

原创 字符函数和字符串函数

C语言有一些列函数用于对不同的字符进行分类,一个字符属于何种类型。以下函数都需要包含头文件。我比较推荐使使,isdigit、islower和isupper这三个函数,主要的好记忆,根据英文翻译就可以直到它是何种功能。digit:数字0-9、lower:下面的、upper:上面的。当然,以上的写法非常粗糙,没有任何技术~例如:写一串代码,判断字符是否为大写,就可以使用isupper函数,返回值大于0就说明str1是大写字母。

2024-07-14 21:43:29 1401 15

原创 数据结构之单链表(赋源码)

线性表的顺序存储结构,有着较大的缺陷线性表的链式存储结构就可以解决这些问题,首先链式存储结构并不需要增容,而是使用多少数据申请多少空间,这一点就避免了时间和空间的浪费。

2024-07-13 09:46:02 1654 10

原创 指针详解(3)

字符指针变量,使用来存放字符数据的地址,常用于存放单个字符或字符串。更常用的是使用字符指针存放字符串.在使用上,由于pstr存放的是字符串第一个字符的地址所以 对pstr解引用就可以打印第一个字符,打印整个操作符只需提供首元素的地址,使用%s就可以打印出来。一到剑指offer里关于字符串的题目:分析程序运行后的结果为什么?数组名代表数组收元素的值,而数组是在堆区上不同的位置开辟空间存放字符串,所以 str1!= str2.

2024-07-11 10:15:53 1461 9

原创 数据结构之顺序表

而线性表又分为两种存储结构:顺序存储结构:是指使用依次使用连续的空间存放线性表的数据元素,它在逻辑结构和物理结构上都是线性的。链式存储结构:使用n个节点链接成的链表,逻辑结构是线性的,物理结构不一定是线性的。顺序表是线性表的一种,基于顺序存储结构实现动态循序表结构动态顺序表一般扩容是以当前空间大小的**2倍(3倍)**增加。顺序表的顶层逻辑是数组,它可以对数据进行的操作;

2024-07-10 10:41:19 2044 7

原创 指针详解(2)

在C语言里数组名还表示着数组首元素地址。以上这两种,对指针p进行赋值的操作均是等价的,都将数组首元素的地址赋给指针p。不妨,我们可以测试一下更具运行结果能够证明,是等价的,都表示着数组首元素的地址但也有两个例外,​ 除此之外,数组名表示首元素的地址这里会不会看着有点懵,&arr,与arr地址是相同的。不妨看看这串代码。根据运行结果不难看出,&arr[0] 和 arr,表示着数组名首元素的地址&arr[0] + 1 和 arr + 1,表示第二的数组元素的地址,地址大小加4。

2024-07-09 18:21:19 1089 5

原创 指针超详解(1)

指针就是地址,地址就是指针,我们使用指针就是在操控地址,通过指针访问地址。对一个变量使用取地址操作符(&)就可以获得它在内存里的地址(名字),把这个地址(名字)给另一个变量保存起来,它就是指针变量。在指针变量里,星号(*)用来说明这个变量是指针,即变量p是一个指针变量,int 类型说明这个指针变量指向的变量类型是整形,int* p = &a;就完成了对地址进行保存的操作。怎么使用?我们已经会将一个变量的地址取出给指针变量保存,下一步就是去使用它,通过解引用操作符(*)完成对地址的操作。

2024-06-06 16:36:21 2126 10

原创 操作符超详解(下)

其中,移位操作符、位操作符的使用是在整形变量里,而整形数据存放内存中其实存放的是补码,所以开篇我会介绍一下二进制里的原码、反码、补码的基础概念,解引用操作符(*)和,取地址操作符(&),涉及指针的运用,下标引用操作符涉及数组。

2024-05-28 19:05:54 2420 7

原创 操作符超详解(上)

基础的必备操作符类型有:算术操作符,部分赋值操作符,关系操作符,逻辑操作符,条件操作符,逗号表达式,|||||||||下标引用操作符,函数调用操作符。这些操作符的使用至少需要学到函数的内容。比较进阶的操作符:移位操作符,位操作符、解引用操作符等。我知道你可能会看的头皮发麻,但是你先别急,这里有许多操作附,学过数学的就,对这些操作符进行用法和逻辑上的了解后即可轻松掌握。列如算数操作符里的,加减乘除,取等,取模运算。这些进阶的操作符需要学习到指针之后的部分才会使用。

2024-05-20 23:11:15 1991 14

原创 一篇文章教你分支语句

引言在C语言里分支结构又称为选择结构,就像生活里常见的选择,比如我就今天中午选择去吃猪脚饭,还是螺蛳粉,或是多分支选择,我今天中午选择去吃猪脚饭,螺蛳粉,快餐饭,水饺。这就对应了我们在C语言里的两种最常见的分支语句分别是if和switch语句。

2024-05-14 22:19:21 871 6

原创 看我怎么干拉编程

基于第一步获得的时间,来进行安排,我只会以学习编程,写博客,练习代码,运动,为目的导向,寻找对应的时间,来完成计划(这个运动是我刻意加入,简单粗俗,不做解释的说健康是我的一切基石)。拿出自己的每日(计划),这部分简单说一下,发现自己的计划完成的比较轻松,请立刻马上加入新的计划,若发现计划完成压力好大,请立刻合理删去部分待办,并反思我为什么会写出这样的计划,这些计划我是基于什么样的态度来写的,是混沌的,还是什么都想要抓住,什么都需要做的态度,若是请保证拉伸区底线。以下是我进行时间上安排规划的思路。

2024-05-09 23:22:58 425 3

空空如也

空空如也

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

TA关注的人

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