自定义博客皮肤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)
  • 收藏
  • 关注

原创 初识模版--初阶

1.泛型编程2.函数模板2.1概念2.2函数模版使用格式2.3函数模版原理2.4函数模版的实例化2.41概念 2.42隐式实例化2.43显示实例化2.5模板参数的匹配原则3.类模版3.1类模版的使用格式3.2类模版的实例化结语:看以上几个swap函数,对于不同类型变量的值交换,我们就需要写不同的swap函数实现这一功能,虽然对于函数重载来说,这并不是什么难事,但是,我们能明显发现使用重载函数应对这种情况是有很大缺点的:1.使用重载的函数仅仅是类型不同,这就会导致代码复用率比较低,只要有新类型出现时,就

2023-11-29 17:03:25 44

原创 C++内存管理

对于自定义类型的操作,new和delete的使用与C语言中的malloc和free的就有较大的差异了,C语言中的malloc和free在处理自定义类型一般是不太适用的差异:new在动态开辟自定义类类型的内存空间后,会自动调用该类类型的默认构造。delete在释放空间之前,会先自动调用该类类型的析构函数。

2023-11-28 17:26:09 38

原创 类和对象完结篇

我们都知道,流插入 > 能够识别的类型只有C++中本身就有的内置类型,对于自定义类型的变量,io类对象cout和cin中没有对应的重载函数,所以本身是无法识别自定义类型的变量的。但我们可以借用已经重载过输入输出的类对象cout,cin来完成识别各个不同参数,使得可以cout和cin能够完成对自定义类型的输入和输出,因为自定义类型的本质也是各个内置类型所组成的。对象参数一定要位于重载函数的第一个参数,否则可能会出现歧义,此外使用的类参数一定是引用类型的参数。为了支持连续。

2023-11-26 20:17:58 39

原创 类的6个默认成员函数--超详解

默认构造对于自定义类型的处理是通过调用自定义类型自己的默认构造函数,以达到初始化自定义类型的处理。

2023-11-14 22:53:04 66

原创 初识类和对象

大家互相学习,一起进步。

2023-11-01 09:29:10 41 1

原创 C++入门详解

命名空间的定义基本语法是使用关键字:namespace后接要取的命名空间的名字,在加上一对{},在{}中的成员我们为命名空间的成员,在命名空间中我们可以定义变量、函数、类型等。例如:此外,命名空间也是可以嵌套使用的,并且在一个工程中,命名空间的名称可以相同,最后在编译的时候,多个名称相同的命名空间将会合并为一个。auto可用于直接定义一个变量,但在定义变量时是需要进行初始化的,因为由auto定义的变量,实际上在编译器编译的时候就已经将auto替换为所定义变量的实际类型了。当使用。

2023-10-28 17:03:02 57 1

原创 常见八大排序

常见的排序八大排序分为四种类型,分别是插入排序、选择排序、交换排序,归并排序。其中插入排序包括直接插入排序和希尔排序,选择排序包括选择排序和堆排序,交换排序包括冒泡排序和快速排序,归并排序和剩余的计数排序自己单独作为一种类型,以下的排序都默认是排升序。顾名思义,直接插入排序是一种比较直接的排序方法,它通过从数据之间的大小比较,找到数据的插入位置,然后完成部分的有序。插入排序是从第二个数开始排序的,通过与前面的数进行比较,找到插入的位置,完成了前面两个数据的有序之后,继续将下一个数进行插入排序,直到最后

2023-10-25 14:56:54 62 1

原创 二叉树的链式结构

return 0;else对于二叉树总结点的计算,其与二叉树的遍历是相似的,只不过是相当于在遍历的同时计算遍历二叉树结点的个数,其同样是可以通过递归实现,将二叉树结点划分为根结点和其左右子树,根节点为1,再计算其左右子树所具有的结点数,这样不断递归划分得到最终二叉树的总结点个数。

2023-10-19 22:55:45 48

原创 二叉树的顺序结构——堆

实际上,我们不需要顺序表就能建立一个堆,可以将一个容量大小固定的数组看成一个堆,围绕该数组本身来建立一个堆,我们给出一个数组,这个数组在逻辑上可以看做一颗完全二叉树,但并不是一个真正的堆,我们可以通过算法,将它构建成一个想要的大(小)堆。左右子树必须是一个堆,才能调整。我们需要先将根节点的左右子树先调整为堆,这里我们从倒数的第一个非叶子节点的子树开始调整,将每一颗子树都调整为堆,一直调整到根节点的树,就可以将整棵树调整成堆,完成堆的建立。void Swap(int* p1, int* p2)//交换两数。

2023-09-26 16:55:19 80 1

原创 初识二叉树

本期关于树与二叉树的基本相关知识到这就介绍完了,下期内容更详细精彩!

2023-09-24 21:33:41 48 1

原创 栈和队列的初识

要实现栈首先就要定义栈的结构,栈应当包含一个指向栈顶位置的变量,以及存储数据的动态数组,同时还要有为了能够实现动态变化,我们应该还要定义一个变量来记录动态数组的容量大小,以便实现对栈大小的扩容。int top;//栈顶//栈容量}ST;

2023-09-20 19:43:55 63 1

原创 链表的实现

SLTNode;//前驱//后继}LTNode;

2023-09-16 18:51:42 58 1

原创 C语言中的字符串函数

下面相关的C语言库函数头文件均是:,包括以下函数:目录求字符串长度 strlen长度不受限制的字符串函数 strcmp:strcpy:strcat:长度受限制的字符串函数strncmp:strncpy:拷贝的字符串长度 小于或等于源字符串长度拷贝的字符串长度大于源字符串长度strncat:要拼接字符串的长度小于或等于源字符串要拼接字符串的长度大于源字符串 查找字符串 strstrstrtok 错误信息报告strerror size_t strlen ( const char * str

2023-07-19 21:57:30 91 1

原创 用例题看懂操作符sizeof与strlen函数在数组中的运用

第二个打印结果,sizeof中的a并不是单独的出现,此时的a为数组的首元素地址,而首元素地址a+0,其结果不变,此时sizeof计算的是指针(地址)大小,而我们知道,指针在不同平台下大小不同, 但其大小都是为4或8个字节大小,这里是64位环境下编译,所以得到结果为8。第三个结果为8,这里的a[0]不是单独出现的,此时的a[0]表示的是第一行元素的首元素地址,也就是第一行第一列的地址,在a[0]的基础上加上1,则表示为第一行第二个元素的地址,而地址在64位编译环境下表示的大小是8个字节,所以得到结果为8。

2023-07-08 23:42:56 93

原创 详解初阶指针

首先我们要知道,内存是被划分为一个个内存单元,而每一个内存单元都有一个单独的编号,每一个编号又被我们称之为地址。在C语言中,我们又把地址称为指针,指针是内存中一个最小单元的编号;我们口头中说的指针通常指的是指针变量,是用于存放内存地址的变量。我们需要知道,在不同的平下,指针的大小是有所不同的。在32位的机器上,地址是由32个0或1组成的二进制序列,其地址需要用4个字节大小的空间来存储;在64位机器上,地址是由64个0或1组成的二进制序列,其地址需要用8个字节大小的空间来存储。所以,32位台下, 指针大小为4

2023-07-06 21:00:12 82 2

原创 隐式类型转换—整型提升

由于C语言中整形算术运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字符型和短整型操作数在使用之前会被转换为普通整形int,再展开计算,这种转换称之为整形提升。整形提升分为两种情况分别是:有符号的整形提升、无符号的整形提升。整形提升是根据变量补码被截断时的最高位来确定进行补位的数,即整形提升是按照变量的数据类型的符号位来提升的。对于有符号位的数,当补码最高位为0或者1时,将使用相对应的数进行补位,将补码序列补充至完整的32位(int型长度为4字节 ,即32位)。对于无符号位的数,其无符

2023-05-28 13:10:51 123 2

原创 操作符详解

作为最常见的操作符,算术操作符包括加、减、乘、除、取余共计四个运算符分别表示符号为:+ - * / %算术操作符比较简单,但是也有一些值得我们注意的: / 操作符对于不同类型的操作数,会产生不同的运算结果: 此外%操作符的两个操作数必须是整数。移位操作符作分为两种,由成双的大于号或者小于号组成,一个是左移操作符 >,我们可以通过箭头的指向来辨识哪一种操作符,箭头指向左边的为左移操作符,箭头指向右边的为右移操作符。要注意的是,移位操作符的使用只能适用于整数

2023-05-20 23:01:02 859 4

原创 C语言实现扫雷

有不好的地方还请指出,或者有更好的方法也可以分享出来。

2023-05-16 22:02:32 145 11

原创 C语言实现简易三子棋

使用多个文件实现能方便代码的复用,调试时也能更加准确迅速找到对应的错误,并且能保证主程序简洁。 进入程序时,我们通过打印简易的游戏主菜单的menu()函数来实现 通过玩家的选择,进入对应的界面,选0,退出游戏程序终止,选1进入游戏,告知玩家对应棋子样式,并打印简易的棋盘,选其他则提醒玩家选择错误,重新选择,而这一过程是一个循环,且第一次一定执行,所以最好使用do while循环来实现这一功能,再配和switch语句可以很好的完成这一流程。 我们可以把棋盘看做一个字符型的二维数组board[Row][Col]

2023-05-10 16:37:10 172 4

原创 初识数组,详解

首先,我们要知道数组是什么,,用于存储若干相同元素下面将分别介绍一维数组,和二维数组的相关知识。

2023-05-07 22:03:45 169 2

原创 初识C语言

数据类型+变量名如:int age=20;

2023-04-16 21:41:40 55 1

原创 关于visual studio中scanf函数报错的解决办法

正常情况下如果使用。

2023-04-04 23:36:57 1298 1

原创 关于我的第一篇博客

学会编程,能够熟练使用编程,先是C语言。

2023-04-01 10:35:30 79

空空如也

空空如也

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

TA关注的人

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