自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C语言】C语言入门宝典:核心概念全解析

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言使用类型 变量名的形式来定义变量int age=10;//默认情况下写99.9编译器会将其识别为double类型,加上f就变成float类型//3.14 double类型//3.14f float类型🚩tips变量的命名要规范只能由字母、数字、下划线(_)组成不能以数字开头长度不能超过63个字符。

2024-06-19 21:17:58 1235 18

原创 【C++】全面解剖搜索二叉树(一整个拿捏住)

本篇归属于C++专栏,具体讲解什么是二叉搜索树(搜索二叉树),如何简单实现它?

2024-06-10 21:25:27 656 21

原创 【C++】多态:编程中的“一人千面”艺术

构成多态还有两个条件:① 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写② 必须通过基类的指针或者引用调用虚函数虚函数:即被virtual修饰的类成员函数称为虚函数public://被virtual修饰的函数叫虚函数cout << "Person->全价" << endl;在虚函数的后面写上 =0 ,则这个函数为纯虚函数。包含纯虚函数的类叫做抽象类(也叫接口类),抽象类不能实例化出对象。派生类继承后也不能实例化出对象,只有重写纯虚函数,派生类才能实例化出对象。

2024-05-27 20:32:13 1146 15

原创 【C++】继承(三):破解C++菱形继承之谜:为什么我们需要虚拟继承?

很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设计出菱形继承。否则在复杂度及性能上都有问题。多继承可以认为是C++的缺陷之一,很多后来的OO语言都没有多继承,如Java继承和组合先来讲一下什么是组合?举个例子:public:private:Person _p;int _age;这就是组合,他和继承很像,都可以使用到Person里面的成员,但是。

2024-05-21 20:25:44 866 10

原创 【C++】继承(二)深入理解继承:派生类默认成员函数与友元、静态成员的奥秘

我们在上一章讲解了:

2024-05-20 20:16:46 1072 2

原创 【C++】继承(一)继承三部曲:概念、转换、作用域一网打尽

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。简单来说就是子类继承父类后,可以使用父类的成员或者函数(前提是访问权限足够,这个我们后面讲)父类(基类):父类是一个更一般、更抽象的类,它定义了一组属性和方法,这些属性和方法会被其子类所继承。

2024-05-18 21:27:46 718 8

原创 【C++】浅谈一下C++中的模板

一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。如果有的小伙伴不知道什么是编译和链接,可看这篇关于编译和链接的详细介绍链接:编译和链接【优点】模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生增强了代码的灵活性【缺陷】模板会导致代码膨胀问题,也会导致编译时间变长出现模板编译错误时,错误信息非常凌乱,不易定位错误。

2024-05-17 10:50:06 635 8

原创 【C++】priority_queues(优先级队列)和反向迭代器适配器的实现

priority_queue他是一种容器适配器,但其实他底层和堆差不多,接口和堆也非常像,功能也是,默认情况下是大堆,你也可以用仿函数把他改成小堆empty():检测容器是否为空size():返回容器中有效元素个数front():返回容器中第一个元素的引用push_back():在容器尾部插入元素pop_back():删除容器尾部元素。

2024-05-14 21:27:44 1004 2

原创 【C++】stack和queue

stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,只能从容器的一端进行数据的插入和删除stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作push_back:尾部插入元素操作。

2024-05-13 19:55:26 674 2

原创 【C++】list原理讲解及其实现

要模拟实现list,必须要熟悉list的底层结构以及其接口的含义,在上一篇我们仔细讲解了list的常见接口的使用及其含义,这篇我们就直接进入主题。

2024-05-12 20:10:13 447 16

原创 【C++】list的使用

resize的用法和vector里面是一样,当n<size时,就只保留前n个数据;当n>size时,从size位置开始到n,值都赋为val。本篇list的使用就讲解完毕了,有问题请评论哦,我会及时解答和更正本文章的错误,我们下篇来讲解一下list的底层原理。在pos位置插入迭代器区间first到last之间的数据。1、这里的参数是内存池,我们一般用默认的就行。链表提供了两种访问数据的形式,分别是。将两个升序的链表有序拼接在一起。2、用n个val构造一个链表。得到链表的有效数据个数。3、迭代器区间构造链表。

2024-05-11 21:15:24 596 6

原创 【C++】vector的底层原理讲解及其实现

其实上面的代码大体逻辑是没有什么问题的,问题就出在这个memcpy上,要知道memcpy底层实现是按字节一个一个拷贝过去的,虽然我们的vector是深拷贝,但是memcpy是浅拷贝,这样写针对内置类型是🆗的,但是针对自定义类型会存在指向同一块空间的问题,两次析构等问题,话不多说,我们看图解。这里我利用库里的函数来实现swap,只交换vector的三个指针更高效,赋值构造的参数是传值传参,会调用拷贝构造,将v2拷贝一份给v,然后之间调用swap函数,将v和。赋值构造:两个已经存在的对象,一个赋值给另一个。

2024-05-11 18:44:41 1200 3

原创 【C++】string底层的实现原理(简单详细)

本篇文章我将按照C++文档库中的模块顺序来实现和讲解其实现原理,我们只讲各板块中常用的目录。

2024-05-08 21:22:36 765 5

原创 【C++】C++内存管理

本篇主要讲解了C/C++中的栈区,堆区,静态区,常量区中各自通常存放什么类型的数据,以及讲解了C++中开辟动态内存的操作符new/delete和C中用malloc/calloc/realloc/free的开辟动态内存的区别

2024-05-01 20:23:34 906 6

原创 【C++】C++入门小知识

本篇入门知识主要讲了C++中的命名空间,缺省参数,函数重载,引用,内联函数还有nullptr

2024-04-28 19:20:18 643 4

原创 【C++】重温类和对象

主要讲到了构造函数中的初始化列表,还有explicit关键字,static成员,友元函数,友元类,内部类,还有拷贝对象时发生的一些优化

2024-03-27 20:09:26 309

原创 类的6个默认成员函数(上)--- 此篇讲前三个最重要的

本篇主要讲解了构造函数,析构函数,拷贝构造函数的概念和使用场景,以及容易混淆的地方

2024-03-10 13:30:21 664 1

原创 数据结构---排序篇---希尔排序

上面完成了预排序,离完成希尔排序不远了,再进行一次直接插入排序就完成了,上面完成预排序只是举例子,当gap=3时,在实现希尔排序的时候gap应该取多少合适呢?上面的例子数据一共有9个,让gap=3挺合适,但是当数据很大或很小时这个3就不合适了,gap的取值和数组的长度密切相关,gap每次应该取多少合适官方只给出了较为合适的并没有说是最好,一般的gap=gap/2或者是gap=gap/3+1,其实你也可以研究出别的,只要最后一次的结果gap==1就行,gap越大,越不接近有序;gap越小,越接近有序;

2024-01-31 16:30:11 243

原创 数据结构---排序篇---直接插入排序

通过动图更直观的了解直接插入排序的思想逻辑,然后用代码实现这个思想

2024-01-12 19:09:39 364

原创 Linux下常用的基本指令(适合初学者)

新手入门级别的基本指令讲解大全

2024-01-07 16:57:24 871 1

原创 栈和队列经典试题--(有效的括号)

括号的匹配问题(有效的括号)

2023-12-12 20:12:23 370

原创 栈和队列--C

分别介绍了栈和队列的基本概念和特性,最后实现简单的栈和队列

2023-12-12 19:20:44 465

原创 编译和链接

经过预处理后的.i文件不再包含宏定义,因为宏定义已经被展开了,并且包含的头文件都已被插入到了.i文件中,所以当我们无法知道头文件和宏是否包含正确时可以查看.i文件进行确认。由语义分析器来完成语义分析,即对表达式的语法层面分析,编译器所能做的分析是语义的静态分析,静态语义分析通常包括声明和类型的匹配,类型的转换等,这个截断会报告错误的语法信息。1.多个.c文件会单独经过编译生成对应的目标文件(在Windows环境下目标文件的后缀是.obj,Linux环境下目标文件的后缀是.o)

2023-10-10 12:44:52 63 1

原创 C语言中的文件和文件操作

文件在读写之前应该先打开文件,使用结束之后要关闭文件,在编写程序的时候,在打开文件的同时都会返回一个FILE*的指针变量指向该文件,相当于建立了指针和文件的联系,使用fopen函数来打开文件,fclose函数来关闭文件。如果没有文件,我们写的程序是不能被长久保存的,因为程序的数据存储在电脑的内存中,程序退出,内存就会被回收,数据就会丢失,因此想要将数据长久的保存是少不了文件的。因为有了缓冲区的存在,在对文件读写数据时要刷新缓冲区或者在文件结束的时候关闭文件,否则会造成读写文件的问题。

2023-10-09 19:47:56 93 1

原创 C语言的题目1---写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换

拿15来举例,15的有效二进制位是11111111将偶数位变成0得到0101---舍偶位保奇位(1)1111将奇数位变成0得到1010---舍奇位保偶位(2)将(1)向左移得到1010,奇数位变成偶数位---(3)将(2)向右移得到0101,偶数位变成奇数位---(4)将(3)和(4)” 加起来 “,实现这样的效果1010+0101=1111位操作符中的|可以实现这样的效果|:按位或 - 对应的二进制位上有1则为1,两个同时为0才为0

2023-10-08 17:13:05 50 1

原创 结构体类型,结构体变量的创建和初始化,结构中存在的内存对齐

通俗来说结构体就是一个集装箱,把你想描述的特征放在一起;定义结构体类型的关键字是struct。2,结构体变量的创建和初始化。2.1,结构体变量的创建。1.3,匿名结构体的创建。2.3,结构体类型的指针。2.2,结构体的初始化。3,结构体的内存对齐。

2023-09-22 13:12:24 102 1

原创 整数和浮点数在内存中的存储

在前面讲解操作符的篇章中就有提到,整数的二进制形式有三种,即原码、反码、补码,三种表示形式均由符号位和数值位组成,符号位是0表示正数,1表示负数,正数的原码反码补码都相同,而负数的原码反码补码需要计算得出–不会的宝子可阅读操作符篇章,整数在内存中以补码的形式存储。想要彻底的了解整数在内存中的存储,那必不可少的就是大小端字节序了,什么是大端字节序,什么又是小端字节序呢?同时,加法和减法也可以统⼀处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是。下面的视图是解释大小端字节序的以及它的概念。

2023-09-19 15:40:01 68 1

原创 字符串函数和它的模拟实现

常见的关于字符串的库函数,有strlen、strcpy、strcat、strcmp、strncpy、strncat、strncmp、strstr、strtok、strerror等

2023-09-17 14:36:10 85 1

原创 指针金典笔试题--轻松应对指针

1,sizeof(数组名),数组名表示整个数组,计算的是整个数组的大小,单位是字节。3,关注内存中是否有\0,如果没有\0,就会持续往后找,可能会越界。1,strlen是库函数,使用时需要包含头文件string.h。2,strlen是求字符串长度的,统计的是\0之前的字符的个数。2,&数组名,数组名表示整个数组,取出的是数组的地址。注:sizeof内部存在表达式时,表达式不参与计算。tips:只要是地址在内存中都是占4/8个字节。2,sizeof计算操作数所占内存的大小。数组名是数组首元素的地址。

2023-09-10 15:24:59 91 1

原创 C语言中的操作符--篇章1

移位操作符--左移操作符和右移操作符的使用和底层运算规律;位操作符--按位与、按位或、按位异或等的使用及其拓展使用,讲解前的知识铺垫进制之间的相互转换,原码、反码、补码的计算方法和操作符对其的操作逻辑

2023-08-08 17:22:25 159

原创 如何用C语言简单的实现扫雷游戏

如何制作简易版扫雷游戏,玩转C语言控制台上也能玩游戏

2023-08-03 17:02:30 140

原创 C语言分支和循环语句

一直重复做某件事,循环往复的做,常见的循环有while,do-while,for三种循环结构,三个循环各有优缺点,while循环先判断再执行,而do-while循环是先执行再判断,所有它至少执行一次,上面这两种循环在逻辑复杂、代码量大的情况下条件和语句块会分隔的比较远,for循环的条件集中在一块,方便修改和阅读,是使用的最频繁的一个循环语句。

2023-07-27 19:30:59 57 1

原创 C语言中的递归

递归:通俗来说,递归就是定义一个函数,在函数内部调用自己。题例:输入任意一个数字,将其每位都打印出来(使用递归)

2023-07-25 15:26:32 100

原创 C语言中的++与- -

计算法则:先+1,再使用。计算法则:先使用,再+1。计算法则:先-1,后使用。计算法则:先使用,后-1。

2023-07-21 12:57:56 111 1

空空如也

空空如也

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

TA关注的人

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