自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++干货-- 基础篇

C++的诞生,一定程度上源于C语言的缺陷,C语言是结构化、模块化的语言,适合较小规模的程序,面对大型、复杂的问题时,C语言暴露了许多的问题。为了解决这样那样的问题,20世纪80年代,计算机界提出了:面向对象思想,支持面向对象的程序设计语言应运而生。1982年,祖师爷博士在C语言的基础上引进并扩充了面向对象的概念,发明了一种新的语言。为了表示该语言与C语言之间的承继关系,该语言被命名为C++;因为C++是基于C语言而 产生的,所以它既可以实现C语言的过程化程序设计,又可以进行。

2024-05-18 13:56:38 680

原创 C++干货 --基础篇(部分)

C++实现了许多对C语言的补充,本文我们简单介绍一下函数重载、内联函数、auto关键字和指针空值nullptr(C++11)。C++干货--引用-CSDN博客在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的 是一直没有人去使用它。C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。

2024-05-16 21:09:48 964

原创 C++干货 --类和对象(一)

在C++中,类和对象是面向对象编程(OOP)的两个核心概念。类(Class)是一种用户定义的数据类型,它包含数据成员(变量)和成员函数(方法),用于描述具有共同属性和行为的对象的集合。对象(Object)则是根据类创建的实例。在之前学习C语言的过程中,我们知道,C语言是面向过程的语言,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。而C++则是面向对象的语言,关注的是对象,将某一事拆分成不同的对象,通过不同对象之间的相互交互完成任务。例如,我们说洗衣服,C语言是怎样的呢?

2024-05-14 23:13:16 1036

原创 C++干货--引用

简单介绍了C++的引用

2024-05-13 16:45:11 1260

原创 排序算法--快速排序

前后指针法,即使用一前一后两个指针,前指针寻找比基准值小的数,如果找到,后指针先后移一位,再与前指针所指的值做交换,前指针再++;2、我们依旧设置left和right,让right从右向左走,如果找到比基准位小的数,就将其存到坑位处,那么原right处就形成了新的坑位。在前提中我们提到了, 快速排序是Hoare于1962年提出的,其基本思想为:任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右 子序列中所有元素均大于基准值,

2024-05-04 23:25:26 1359

原创 排序算法--直接选择排序

这里我们的思路就是定义一个变量begin,作为未排序序列的第一个数,定义一个变量mini保存最小数的下标。更要命的,一次交换完,begin和end收缩,a[0]与a[10]的位置已经固定,无法再改动,导致程序越运行越错。这里每次找到最小的那个元素,将其与未排序序列的第一个元素交换,交换后最小的那个元素已经找到,再从未排序序列中找第二小的元素......直到序列完全有序。它的算法思想是每一次从待排序的。根据我们上面的分析,改动版的的代码就是一次完成最大、最小两个数的排序,实际上与一个数的排序并没有什么不同。

2024-05-03 23:29:24 1152

原创 排序算法--希尔排序

我们一直假设gap=3,这是因为上面的举例是10个数,这时是合适的。底层的逻辑实际上就是直接插入排序,但是与直接插入排序算法不同的一点是:其i每次的变化量是gap而不是1。希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算,因此在好些书中给出的希尔排序的时间复杂度都不固定。从上面的过程来看,如果gap越大,能够将大的数更加快速地挪动到后面,gap越小,挪动的更加频繁,但是更有序。,直到增量缩小为1时,这次排序就是直接插入排序,因为此时基本有序,所以这次的直接插入排序效率极高。

2024-05-02 17:35:35 567

原创 排序算法--冒泡排序

冒泡排序,英语名是Bubble Sort,是一种最基础的交换排序。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。交换排序:根据序列中两个值的比较结果来交换这两个数在序列中的位置,交换排序的特点是:将值较大的数向序列的尾部移动,值较小的数向序列的前部移动。外面的循环控制所有回合,内部循环是单趟排序,将最大的移到右边,如果a[i-1]比a[i]小,两数就交换。由于冒泡排序的每一轮都要遍历一遍所有的元素,轮转的次数和元素数量相当,所以时间复杂度为O(N^2)。

2024-05-01 23:40:18 377

原创 排序算法——直接插入排序

直接插入排序与希尔排序是插入排序的两个分支,直接插入排序是较为简单的一种排序算法,同时也是众多算法实现或优化的基石。

2024-05-01 22:44:26 642 1

原创 使用malloc函数模拟开辟一个3*5的整型二维数组,开辟好后,使用二维数组的下标访问形式,访问空间。

因为是一个指向指针数组的指针,所以该指针是一个二级指针。我们要打印一个三行五列的数组,所以二级指针ps指向一个有着三个一级指针的指针数组。而每个一级指针又是一个有着五个变量的一维数组。这里,每个一级指针分配5个整型的空间,如果有某一个变量分配失败,需要将开辟的空间free掉。但你可以分配一个指向指针数组的指针,然后每个指针指向一个一维数组。访问空间就是正常的访问,就是要记得使用完空间后,及时将动态开辟的空间free掉。函数用于动态内存分配。对于二维数组,你不能直接分配一个连续的二维数组块,因为。

2024-03-07 23:53:33 341

原创 浅谈柔性数组

这种特性为在结构体中高效地存储动态大小的数组提供了便利。声明柔性数组的两种写法:这两种写法都可,如果第二种写法报错的话,建议换第一种试试。为什么必须是结构体的最后一个元素才才能声明柔性数组呢?这就需要我们了解一下柔性数组的特点。

2024-03-03 23:42:21 1229

原创 常见的动态内存的错误

使用free释放动态内存的一部分的原因是:malloc成功开辟空间确实返回的是指向那块空间的指针,p目前在起始位置,但是经过p++,p的位置已经不在原先的起始位置,这时free空间仅仅只是释放了从p开始的部分,释放的空间是不完整的。内存不是无穷无尽的,有限的内存空间如果申请并使用了,用完没有释放,那么这块内存就一直无法被重新利用,最后再申请内存就找不到空闲的了。这个函数的问题就是它是死循环的,程序的设计并没有给p被free的条件,当p出了test就被销毁,那块内存空间就无法找到,也就是内存泄露了。

2024-02-29 22:51:23 345

原创 动态内存管理相关的四种函数

在之前的学习中我们们经常使用数组、变量开辟一块固定的内存空间,但是当实际的需要中可能我们并不知道到底需要多大的内存空间,只有在程序运行时才会知道。那么如果空间开小了,不能满足需求;如果空间开大了造成空间的浪费。因此,C语言引入了动态内存开辟,使得程序员自己可以申请和开辟空间。那么如何实现对内存的动态开辟呢?

2024-02-28 23:44:33 1031

原创 memset函数和memcmp函数的使用

介绍完memset函数,还有一个函数 memcmp,同样是内存函数的一种,使用时需要调用,memcmp函数的作用是比较从指针1和指针2指向的位置开始,向后的num个字节。实际上memcmp()函数是按字节比较每个字节的ASCII码值,而我们知道小写字母的ASCII码值大于大写字母的ASCII码值(相同字母的大小写ASCII码值相差32),因此arr1大。这个函数在使用时需要提供三个参数,第一个参数为要改变的内存空间,第二个参数为要改变的值是什么,第三个参数是要改变的数量。

2024-02-27 22:25:50 327

原创 memmove

与memcpy函数一样,memmove函数也是库函数中的,也是从source位置开始向后复制num个字节的数据到destination所处的内存位置。实际上两者之间的差别也就是memmove函数处理的源内存块和目标内存块是可以重叠的。这里我们将arr1往后20个字节的数据复制到arr1+2的位置。

2024-02-26 23:27:36 412 1

原创 memcpy

memcpy指的是c和c++使用的内存拷贝函数,memcpy函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中。函数memcpy从source位置开始向后复制num个字节的数据到destination指向的内存位置。因为不知道memcpy究竟要拷贝什么样的数据,所以返回值和参数都是void*类型(num是要拷贝数据的大小,size_t意思是无符号的类型)。在段代码中,arr1的前20个字节的数据被复制到arr2所在的内存位置。在这段代码中将arr3中的数据复制到arr4中。

2024-02-26 20:19:32 266 1

原创 结构体的内存对齐

在之前的文章中我们简单的介绍了结构体的基本概念,包括:什么是结构体、结构体类型的声明、结构体变量的创建与使用、结构体的访问操作符等,详情可以看之前的内容。在掌握了结构体的基本知识之后,我们可能会好奇一件事:结构体的大小是多少?想要计算结构体的大小,我们就要了解一下什么是。

2024-02-24 21:56:20 622

原创 深入理解指针(初阶)

我们知道计算机在处理数据时,需要的数据是在内存中读取的,处理后的数据也会放回内存,那么如何有效的管理内存空间呢?实际上内存被划分为一个一个的内存单元,每个内存单元的大小为一个字节。每个内存单元也有各自的编号,根据内存编号,有了这个编号,CPU就能快速的找到相应的内存空间。生活中的门牌号,我们可以理解为地址,所以计算机中的内存单元的编号我们也称为地址,C语言又给这个地址取了一个新的名字叫指针。所以,我们可以认为 内存单元的编号==地址==指针。

2024-02-07 23:53:56 873 1

原创 结构体(初阶)

结构(结构体),是一些值的集合,这些值称为成员变量,与数组的元素必须是统一类型不同的是,结构体的值可以是不同类型的变量。

2024-02-06 23:42:29 338 1

原创 C语言:打印菱形

我们可以看到,上半部分,左半边的空格数是随行数 i 递减的,每次都要减少 i 个(右半边同理)。而 * 则需从整个上半部分看,它的数量是1+2*(len-1)。下半部分,左半边,空格是随着行数 i 逐渐增加的,每次要增加 i 个(右半部分同理)。而 * 的数量则是(2*(len)-1)-2*i个。假设上半部分有 len 行,那么下半部分就是 len-1 行,为了方便观察,我们再将菱形分成四份。那么,现在这个菱形就是由一个三角形与一个倒三角型组成,且倒三角的高度比三角形的少1行。

2024-02-06 00:19:08 133 1

原创 题目分析:两个整数二进制位不同个数

今天系统复习了一部分操作符,在牛客网上做了一道很有意思的题,我将这道题的链接也放在下面,大家有兴趣也可以去做一下。

2024-02-02 18:49:44 263

原创 简单的扫雷小游戏

因为现在我们要实现一个9*9的棋盘,所以我们定义二维数组board[11][11](为啥是11*11在上文我们是讲过的)无可厚非。但是,如果我们要改变棋盘的大小难道我们要对所有的数组都进行更改吗?这非常麻烦。因此,我们宏定义了ROW、COL这两个变量(ROWS和COLS是数组的大小,是为防止数组越界才扩大一圈定义,但是实际真正的棋盘大小是ROW和COL,有需求直接更改ROW和COL即可。

2024-02-01 18:26:31 888 1

原创 C语言:数组

这里我们简单讲述了数组的基本知识。

2024-01-31 22:05:35 829

原创 函数:函数递归

函数递归,实际上就是一种解决问题的方法。通俗点来说,在C语言中,递归就是函数自己调用自己。最简单的,例如主函数自己调用自己(当然这并不是正确的使用)上图这个简单的递归程序,只是简单的演示了递归的基本形式,但是,它并不是一个正确的递归,代码会在无限的递归中陷入死循环,最终导致栈溢出。那为什么会出现这种死递归的现象呢?

2024-01-30 21:26:41 541 1

原创 数据结构——链表

在上次的文章中,我们讲到了关于顺序表的好处,比如它可以连续存储,它的尾插是很方便的,等等。但是,事物肯定不是十全十美的,顺序表也有它相应的问题:它的,时间复杂度很高;。3.。因此先贤们为了解决这些问题,设计出了链表这一数据结构。

2023-12-22 23:46:58 814

原创 数据结构——顺序表

例如:以上就是今天要讲的内容,本文仅仅简单介绍了顺序表,对动态顺序表的建立也有不足之处,仅仅只是一个初步的搭建,如有不足之处,欢迎提出。

2023-12-17 23:59:27 25

原创 踏入计算机世界的第一步

讲一讲我为什么要写播客吧,写播客的过程其实就是再梳理脑中知识的过程,著名的“费曼学习法”的核心就是要把知识讲给他人听,所以,对我来说写播客的意义,在于梳理学习的脉络以便打下坚实的地基,而对大家来说,读到的每一篇文章其实就是一次思维的碰撞,因此,如果我的博客对你有所启发,真的很好,如果有不妥当的地方,也可以相互交流,共同进步。其实不然,就好像是一个粗糙而又渗水的木箱,我对计算机的知识储备是浅薄而易忘的。我的目标是把C++学到精通,深入,希望成为一名C++开发工程师,目前最想进的公司是米哈游。

2023-07-20 14:23:30 41

空空如也

空空如也

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

TA关注的人

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