自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++中的vector二维数组(全面详解)

代码解释:由图可以看出上面代码是由三个vector<int>组成的,所以size1的大小是vector<int>类型的数量,size2的大小是每个vector<int>里存的int类型的数量。'0'就是初始化的内容。与第一个一样,只不过N是初始值,而第一个什么也不给就默认初始为‘0’row:行数,col:列数,初始值:0。

2024-10-17 17:52:11 813

原创 vector的模拟实现

当我们学习完C++库中的vector之后,我们来进行简单的vector模拟实现。直接放入代码,由于部分和之前的string差不多,不一样的代码注释请自行观看。

2024-10-15 08:35:02 322

原创 C++详解vector

格式:vector 类名称。

2024-09-30 17:21:50 923

原创 C++中的string模拟实现

上一章讲了库中的string函数,这次我们来讲一讲模拟实现。我简写了解释,水一篇。

2024-09-23 16:58:49 387

原创 C++详解string(全面解析)

npos:实际上是‘-1’,底层存的是补码,也就是42亿九千万,换句话说’-1‘代表不可能开出这么大的连续空间,所以npos代表取到字符串的结尾。作用:可以在string后面追加字符串,而且有多种功能,例如:追加一个字符串的一部分,多个相同的字符等等,我们举一两个代码例子看一下。基于模板的出现,C++中就出现了各种模板类,而我们仅需要调用对应的模板类即可使用,十分的方便,今天我们来学习C++中第一个模板类——【】重载,在函数重载的那章见过,所以这里就不过多介绍,普通版本可读可写,const版本只读。

2024-09-07 17:58:41 2546

原创 C++ 模板初阶

历史上我们不缺乏对于模板的研究,类似于活字印刷术,铁水浇灌等,所以C++中的模板也是如此,被发明出来就是方便代码编写的。函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。

2024-08-27 17:19:22 947 2

原创 C++类与对象(下)

在类与对象的最开始的时候我们学了构造函数,构造函数在初始化成员变量时会进行赋值。 上述代码中,通过构造函数调用后,变量已经得到了初始值,但是这仅仅是对成员变量的赋值,因为变量的【初始化只能赋值一次】而构造函数的【赋值可赋值多次】,所以不能称其为初始化。初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。 注意: 思考一道小题这里就充分体现了注意4中的初始化列表的初始化顺序是变量声明的顺序。 下面是一个针对不同成员变量的初始

2024-08-13 18:12:12 998

原创 C++类与对象(中)

注意:C++11 中针对内置类型成员不初始化的缺陷,又打了补丁,即:内置类型成员变量在类中声明时可以给默认值。

2024-03-23 21:46:31 644

原创 C++类与对象(上)

/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式:1.声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。2.类声明放在.h文件中,成员函数定义放在.cpp成员函数名前需要加类名一般情况下,更期望采用第二种方式。

2024-03-16 10:07:04 981 12

原创 初识C++编程语言(万字详解)

auto 作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。言简意赅就是auto可以根据变量的值自动推导变量的类型。return 10;auto b = a;//auto e;无法通过编译,使用auto定义变量时必须对其进行初始化return 0;【注意】使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。

2024-03-09 17:37:07 1502 6

原创 数据结构——顺序表

线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表在,也就说是连续的一条直线。但是,线性表在物理上存储时,通常以数组和链式结构的形式存储。

2024-02-04 22:18:54 570 2

原创 数据结构——算法的时间复杂度和空间复杂度

在计算机科学中,算法的时间复杂度是一个。

2024-02-04 16:45:08 1057

原创 C语言——编译和链接

在这个环境中源代码被转换为可执行的机器指令。,它用于实际执行代码。

2024-01-31 23:18:06 1444 2

原创 C语言——文件操作(看这一篇就够了)

磁盘上的文件是文件但是在程序设计中,我们一般谈及的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)功能函数名适用于字符输入函数fgetc所有输入流字符输出函数fputc所有输出流文本行输入函数fgets所有输入流文本行输出函数fputs所有输出流格式化输入函数fscanf所有输入流格式化输出函数fprintf所有输出流二进制输入fread文件二进制输出fwrite文件int main()//打开文件return 1;

2024-01-30 22:53:59 1420 3

原创 C语言——柔性数组

根据内存对齐规则,这个结构如果不算柔性数组大小的话,的确是8,而我们可以看到,这里打印出来的也确实是8,所以我们可以理解第二条特点sizeof返回结构大小的时候不包括柔性数组的大小。一次申请空间,空间内存一定是连续的,但是两次申请空间的话,就不一定是连续的了,内存之间就有可能存在缝隙,那么这些缝隙,也就有可能影响访问速度。那么第一条特点也就可以解释了,倘若结构里面只有柔性数组的话,那么sizeof计算结构体大小,就没办法算了,所以结构里柔性数组的前面必须至少有一个其他类型的成员。答案是:第一个会更好一点。

2024-01-30 14:03:00 1525 1

原创 C语言——动态内存管理(经典例题)

我们可以用二级指针来进行接收,这样在malloc的时候*p找到的就是str的地址,然后malloc申请的空间就是str所指向的了,这样就不会发生解引用NULL的操作了。或者我们可以将p作为返回值返回,并将其赋值给str,这样也可以解决这个问题。

2024-01-29 23:16:46 504

原创 C语言——动态内存管理

/这是包含malloc的头文件//这种当然没什么问题,但是使用者在用的时候肯定是知道自己要开辟什么类型的空间的,// 如果用void* P来接收的话,反而不是太方便,所以我们习惯写下面这种写法。if (p == NULL) {//这里我们需要判断一下是否申请成功了,//如果不进行判断的话,后面会出现解引用NULL指针的问题。return 1;return 0;那么有人要问了,malloc真的会申请失败么,答案是会的 🕶️🕶️🕶️看图当我们所申请的值太大时,就会申请失败。

2024-01-29 09:21:15 1314 2

原创 C语言——静态通讯录的实现

【代码】C语言——静态通讯录的实现。

2024-01-21 23:36:45 515 9

原创 C语言——内存函数介绍和模拟实现(memcpy、memmove、memset、memcmp)

之前我们讲过一些字符串函数(),今天我们来讲一讲几个内存函数,那么可能有人要问了,都有字符串函数了,怎么又来个内存函数,这不是一样的么?我们要知道之前的字符串函数只能对字符串进行一系列操作很是局限,这次的内存函数就不一样了,内存函数的范围就很广了,它可以对数组啊,或者是结构体进行操作了。

2024-01-21 16:55:05 1065 4

原创 C语言——不同进制之间的转换

大家在做编程题的过程中一定遇到过类似,进制之间的转换的问题,无论是二进制、八进制、还是我们最熟悉的十进制,不同的进制存在着不同的存储方式,那么不同的存储方式之间又会有着相互转换,那么今天我们来讲一讲代码该如何实现进制之间的转换。

2024-01-14 18:18:36 703 1

原创 C语言天花板——指针(经典题目)

指针我们已经学习的差不多了,今天我来给大家分享几个经典的题目,来让我们相互学习🏎️🏎️🏎️。相信大家一定从今天的题目当中收获满满,希望大家有美好的一天!

2024-01-13 23:43:09 3135 3

原创 C语言天花板——指针(进阶3)

这次我们得主角是一个指针P,它所指向的是一个字符串,那么又会发生怎样奇妙的火花呢?我们知道sizeof函数是计算数组的大小的,所以我们这的输出值都是什么呢?我们可以看到运行结果和我们分析的是一致的,所以对于数组名的引用,还是有很多坑的。相信大家经过这次的学习一定可以对指针又不一样的理解🎖️🎖️🎖️。),今天我们来讲一些有趣的关于指针的问题🚢🚢🚢。

2024-01-13 20:15:11 562 1

原创 C语言天花板——指针(进阶2)

的函数,如果你把函数指针作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时有另外的一方调用的,用于对该事件或条件进行响应。刚刚我们提到了函数指针数组,它是用来存放函数指针的一种数组,那么是数组就会有地址,那么将这个地址取出来,那这个地址就是指向。而且还有一个不好的地方就是如果我想要再添加别的函数,那么我还是要写一边一摸一样的四行代码,如果是稍微复杂的函数功能,还是刚刚的计数器的例子,我们刚刚说代码有冗余。

2024-01-12 21:30:56 1113 2

原创 C语言快速排序——qsort函数

我们可以看到通过qsort函数来对任意类型的变量进行排序,相信大家也能通过上面的讲解来体会到qsort的强大之处,希望大家可以更用心地学习C语言。他只能排序整形数组的顺序,太过于局限,所以我们引入qsort函数。这就不得不提出编程中最最基础的排序算法---我们可以看到运行截图,成功的得到了升序数列。

2024-01-12 21:29:42 518

原创 C语言天花板——指针(进阶1)

总结:所以我们最后可以发现字符数组不仅可以表示字符,还可以表示字符串。实际上形参的形式应该是指针,初期写成数组形式,是便于初学者理解和使用。注意:如果像arr3一样没有数组大小的话,数组指针里面不能为空。今天就给大家讲解这么多,希望可以和大家一起努力变强🍁🍁🍁。那这种以指针类型为元素的数组怎么来用呢?浮点型指针:是指向浮点类型的指针。字符指针:是指向字符类型的指针。整形指针:是指向整型类型的指针。数组指针:是指向数组类型的指针。

2023-10-15 20:37:21 473 36

原创 解锁C语言结构体的力量(进阶)

1、位段的成员必须是int或signed int。2、位段的成员名后边有一个冒号和一个数字。如果不采用位段的话,最低也要16个字节,而我们通过位段可以调节他所占字节的大小,这样有助于我们来节省空间,但是条件较为苛刻,在用之前我们需要明确的直到这个要用多少字节才能准确的给他分配多少。所以总的来说: 位段是用来节省空间的。这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体)。

2023-10-08 20:15:19 295 34

原创 C语言——字符串函数的模拟实现(strlen、strcpy、strcmp、strcat、strstr、strerror、strtok)

可以看我们四种方法的运行结果,都是可以正确的求出字符串‘acbdef的长度.

2023-10-05 23:08:42 348 25

原创 实用调试技巧

与Bug相比,还有一个Debug,意味着调试的意思,在程序中也就是程序员对代码进行纠正的过程。而今天我们就来学习怎么进行简单的调试。我们来开一个窗口展示一下。

2023-10-02 22:47:31 1233 14

原创 解锁C语言结构体的力量(初阶)

引言:在实际生活中我们不可能遇到的都是简单变量,大部分情况都是复杂变量,所以今天我们走进C语言中关于复杂变量的世界——结构体。

2023-09-24 22:29:54 471 24

原创 C语言天花板——指针(初阶)

指针理解的两个要点:1️⃣指针是内存中一个最小单元的编号,也就是地址2️⃣平常口语中说的指针,通常指的是指针变量,是用来存放地址的变量数据存储在内存中,是以二进制的方式进行存储的,每一个二进制找到它对应的地址存储起来例如这样的一个整型变量a,在内存中他的存储方式就是:我们可以看到这样一个一个的格子,这一个格子便是我们的内存单元,单位是字节,上面代码中的整型变量a,就占四个字节,也就是图中红色区域开辟的空间,里面存的就是变量a。🎊🎊🎊。

2023-09-17 22:32:00 15009 39

原创 操作符详解(三)

引言:前两篇我们讲了一些二进制层面上的操作符,这篇我们来把剩下的操作符给介绍一下。

2023-09-10 22:13:47 205 15

原创 C语言——位操作符

注意:他们的操作数必须是整数。

2023-08-29 21:22:28 229 8

原创 移位操作符

(也就是 + - * / %),可以轻松的实现各种运算,这个我们就不再多说了,那么移位操作符也是进行一种运算的,只不过不同的是进行的是二进制运算整数的二进制表示形式有三种:原码、补码、反码原码:按照数值的正负直接写出的二进制序列就是原码反码:原码的符号位不变,其他位按位取反补码:反码的二进制+1,得到补码。

2023-08-22 23:25:14 163 10

原创 探究const关键字

这里的const修饰了*p(指向a地址的变量),从而阻止了通过修改*p来修改变量a。这里的const修饰了p (指针变量),它的作用是不再让变量p可以指向别的地址。这也是最常见的const用法了。1、const放在*的前面。主要修饰函数的参数和返回值。但是并不影响p指向其他地址。2、const放在*的后面。返回值a或b不可修改。

2023-08-15 22:12:44 204 10

原创 C语言中的重要组件——函数(2)

1.声明指的是告诉编译器有一个函数(包括函数叫什么,参数,返回类型),但具体存不存在,声明并不能决定。2.函数的声明一般在函数的使用之前,要满足先声明后使用。3.函数的声明一般要放在头文件中。函数的定义一般是指函数功能的实现。未来在工程中,代码一般是比较多的,所以我们一般将函数的声明放在.h文件中,函数的实现一般放在.c文件中。程序调用自身的编程技巧称为递归递归作为一种算法在程序设计语言中广泛应用。

2023-08-12 23:28:00 231 6

原创 数据的内存存储(详解)

我们以char类型为例:由char类型可以推出所有整形家族的存储方式:int main()i >= 0;

2023-08-08 13:51:29 201 4

原创 C语言——扫雷

游戏介绍:电脑会自动生成棋盘,然后随机放入地雷格子,玩家无法看到地雷格子,当玩家选到没有地雷的格子时,如果以这个格子为中心的周围的八个格子有地雷的话,则这个格子将会显示出这八个格子里有多少地雷,反之如果选到了地雷格子则游戏结束。游戏大致实现思路:我们先实现出一个菜单供玩家选择,然后通过调用函数来实现游戏中的各个功能。

2023-07-31 21:34:55 165 4

原创 C语言——三子棋

引言:想必大家都玩过这个简单的游戏——三子棋,今天我们就来实现一下关于三子棋该如何实现。

2023-07-27 12:11:25 343 6

原创 C语言中的重要组件——函数(1)

目录一、函数是什么二、函数的分类三、函数的组成四、函数的参数五、函数的调用引言:函数可以说是C语言中的一大核心,好比大厦的基石。函数能够让我们将代码模块化,使其更具可读性、可维护性和可重用性。本博客将深入探讨C语言函数的概念和使用,并为您提供一些实用示例。在一个程序中的一段特定代码,用于实现独特的功能,相较于程序中的其他代码,它具有较为完整的独立性。库函数:由编译厂商提供,可以根据自己的需求进行引用。(stdio.h就是一个常见的输入输出函数)自定义函数:也可以说是程序员的灵魂,仅需个人的编写,就可以实现个

2023-07-23 22:10:21 217 4

原创 理解C语言中的 extern和static关键字

两个文件里的变量b不能通用所以导致代码错误​​​​​​​引用外部符号extern,就可以正常输出变量b。

2023-07-16 16:35:23 293 7

空空如也

空空如也

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

TA关注的人

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