自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】- 继承(继承定义!!基本格式!切片概念!!菱形继承详解!)

/ 调用从Base类继承的方法// 调用Derived类自己的方法return 0;这里定义了两个类:Base(基类)和Derived(派生类)。派生类Derived通过公有继承(public)的方式继承了基类Base。这意味着Derived类的对象可以访问Base类中的公有成员函数和属性,在主函数中,创建了Derived类的对象d,然后分别调用了baseMethod和derivedMethod方法。

2024-02-04 21:47:54 1219

原创 【C++】- string(!万字讲解C++的string类!!)

是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。STL为我们提供了许多常用的数据结构和算法,包括数组、链表、栈、队列、堆、集合、映射、排序、查找等等,可以帮助程序员大大提高开发效率。STL中的容器包括序列式容器和关联式容器两种,序列式容器包括vector、deque、list、forward_list等,而关联式容器则包括set、multiset、map、multimap等。

2024-01-16 21:38:10 1533

原创 【C++】- 内存管理(new和delete详解!!)

总之,new是C++中用于在堆上动态分配内存的关键字,它可以调用构造函数初始化分配的内存,并返回指向该内存的指针。需要配套new进行使用。new是C++的关键字,用于在堆上动态分配内存,它可以调用适当的构造函数初始化分配的内存,并返回指向该内存的指针。在常见的C/C++实现中,常量区通常位于程序的可执行文件中,并且在程序运行时是只读的,不允许修改。在计算机的程序内,有不同的内存分区,内存分区是为了有效管理和利用计算机的内存资源而进行的划分,也是因为不同的数据有不同的存储需求,各区域需要满足不同的需求。

2024-01-15 21:47:05 893

原创 【C++】-类和对象(友元!!内部类!!匿名对象!详解)

内部类可以访问包含它的外部类的所有成员,包括私有成员和保护成员。使用内部类可以将相关的类组合在一起,并提高代码的可读性和可维护性。

2024-01-14 21:55:14 1020

原创 【C++】- 类和对象(构造函数!!explicit关键字stastic关键字!!详解)

但实际上,我们想要做的是初始化成员变量,在构造函数中对成员变量进行的赋值操作并不是对象的初始化,而只是给成员变量赋予了初始值。需要注意的是,在C++11标准引入之前,我们无法在构造函数的初始化列表中直接对非静态成员变量进行初始化,只能在构造函数体内进行赋值操作。还有需要注意的一点是,初始化列表的顺序应该与成员变量在类中声明的顺序一致,这样可以保证每个成员变量都能被正确地初始化。这可能导致一些意外的行为和错误的结果。另外,成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后。

2024-01-13 20:17:27 1053

原创 【C++】- 类和对象(运算符重载!!const!!详解!!)

运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。所以运算符重载是通过函数重载的方式来实现的,其中函数名为运算符的符号。运算符重载函数可以是类的成员函数或友元函数。返回值类型 operator运算符 (参数列表) {// 运算符的实现在运算符重载函数中,参数列表指定了参与运算的操作数。返回值类型通常为该类类型的引用或对象,以支持连续运算。需要注意的是,不是所有的运算符都可以被重载,.*sizeof?注意以上5个运算符不能重载。

2024-01-12 14:57:44 1006 1

原创 【C++】- 类和对象(构造函数!析构函数!拷贝构造函数!详解)

在面向对象的编程中,析构函数是一种特殊类型的函数,用于在对象生命周期结束时执行清理和释放资源的操作。构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务并不是开空间创建对象,而是初始化对象。在拷贝构造函数中,如果成员变量包含指针或动态分配的内存,我们应该采用深拷贝,确保每个对象都有自己的独立内存空间。在上述示例代码中,MyClass类的析构函数负责释放动态分配的内存,它会在对象生命周期结束时自动被调用。对象的数据成员,为对象分配内存空间,并执行其他必要的初始化操作。

2024-01-07 21:26:35 1240 2

原创 【C++】- 类和对象(!!C++类基本概念!this指针详解)

/ 类体:由成员函数和成员变量组成 };类体内的内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为成员函数。这里注意!在类内直接定义的函数会被默认视为内联函数,但并不意味着所有在类内定义的函数都是内联函数。内联函数是一种编译器优化的机制,它将函数的定义体直接插入到调用该函数的地方,而不是通过函数调用的方式执行。这样可以减少函数调用的开销,提高程序的执行效率。就像这样直接插入:在类内定义的函数,默认情况下会被视为内联函数。

2024-01-06 22:48:40 1330 4

原创 C++入门

我们已经知道了,内联函数在编译时是直接将代码插入到调用处,所以需要注意的是,内联函数适合用于函数体较短的函数,如果函数体过大,频繁地使用内联函数可能会导致代码膨胀,增加可执行文件的大小,反而降低程序的性能。所以引用的底层实现是通过指针来实现的,而指针是由 C++ 编译器转换为对应的汇编代码的,所以引用底层是用汇编实现的,引用在底层也是开了空间。另外,缺省函数不能在一个函数的声明和定义中同时出现,最好在函数声明的地方给,如果函数的声明和定义分离的话,那么尽量在函数声明里给出函数的缺省值。

2024-01-02 22:51:16 1344

原创 【数据结构】- 排序(详细介绍几种排序算法!!!*直接插入排序,*希尔排序,*选择排序,*堆排序,*冒泡排序,*快速排序,*归并排序)

希尔排序的步骤为:确定一个间距(gap)值,通常是将数组长度除以2,然后不断除以2,直到gap值为1根据当前的gap值,将待排序数组分成若干个子序列。每个子序列相隔gap个位置,即第一个子序列包含第0、第gap、第2gap…位置上的元素,第二个子序列包含第1、第1+gap、第1+2gap…位置上的元素,依此类推。对每个子序列进行排序。缩小gap值并重复步骤2和3,在步骤3完成后,将gap减小(通常是除以2),再次进行步骤2和步骤3。

2023-12-31 20:39:37 1139 1

原创 《C和指针》重点知识摘要-第三章

第三章以程序中的数据为中心,围绕C语言数据这一概念,辐射与其相关的一系列知识点,介绍了C语言变量的属性和基本概念。

2023-12-30 22:27:25 411 1

原创 《C和指针》重点知识摘要-第二章

第二章大概围绕编程的环境,程序的执行展开,介绍一些基本概念。

2023-12-29 22:11:01 372 1

原创 【数据结构】- 链表

想要改变结构体就要用结构体指针,想要改变结构体指针,要用结构体指针的指针所以,相应的,我们将形参设为二级指针时,再次传入指针想当于形参是指针的指针,那么当调用函数时,可以通过二级指针找到指针的地址,进行增加数据。众所周知,形参传一个指针是为了找到指向想要通过函数修改的变量的地址,可以在指针的基础上来修改变量,但是这里的形参是二级指针,也就是一个指针的地址,而不是普通的指针。打印链表,我们只需依次打印出里面的数据,而每个结点中的指针则帮助我们找到下一个数据,并打印它,我们将这个过程封装进函数。

2023-12-29 15:29:34 1034 1

原创 【数据结构】- 顺序表详解(动图演示!!!!)

顺序表(SeqList)是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。

2023-08-23 21:00:49 941 4

原创 《C和指针》重点知识摘要-第一章

d表示读取一个整型值,字符从标准输入读取,前导空白被跳过,然后数字被转换为一个整数,结果存于指定的数组元素中,在参数前面,我们需要加上一个&符号,因为数组下标选择的是一个单一的数组元素,它是一个标量。函数的声明,该函数有两个形式参数,在函数声明的数组参数中,我们发现没有指定数组的长度,这种格式是没问题的,因为无论调用函数的程序传递给它的数组参数的长度是多少,这个函数都将照收不误。,表示已被成功读取,当gets函数被调用但事实上不存在输入行时,它就返回NULL值,表达它到达了输入的末尾。

2023-08-19 14:18:13 58

原创 【C语言】- 动态内存管理(动态内存开辟函数,柔性数组)

c语言为我们提供了一个动态内存开辟的函数。

2023-08-15 17:48:41 50 3

原创 【C语言】-自定义类型(内存对齐详解,结构体实现位段,枚举和联合)

位段的声明与结构体类似,但是有两点不同需要注意:1.位段的成员必须是int或signed int。2.位段的成员名后边有一个冒号和一个数字。//后面的数字代表二进制位,表示第一个成员a只占2个比特位int b:5;int c:10;int d:30;打印位段A的大小位段的成员可以是 int unsigned int signed int 或者是 char (属于整形家族)类型。

2023-08-15 14:08:07 67 3

原创 【C语言】- 字符串和内存函数(模拟实现内存函数strlen strcpy strcat strcmp...)

本章向大家介绍一些常用的与字符串有关的或是一些固定的内存函数,模拟实现一部分函数,帮助大家理解更透彻。

2023-08-06 15:51:04 79 1

原创 一篇博客让你搞懂所有指针、数组问题

!!温馨提示:*本章所运行的结果均在X86环境下,X64自行转换*

2023-08-04 21:58:49 47 2

原创 【C语言】- 指针进阶版(数组指针,数组传参,函数指针数组等)

提起指针,我们已经不陌生,指针就是地址,而在数组中,我们已知道的数组名代表数组首元素的地址,而&符号是取出某个元素的地址,那我们看一段代码来了解一下&数组名和数组名的区别:当我们打印&数组名的地址和数组名的地址时,发现他们的结果是一样的,那是不是代表二者等价呢我们已经知道指针±整数的意义,当我们对上面的代码进行±整数时:当我们对两者进行+1的操作时,结果有了偏差,这就明白了&a和a的值虽然一样,但是所表示的意义并不同,从他们+1所差的字节数,我们可以大致总结一下。

2023-08-03 20:20:19 111 1

原创 C语言-数据在内存中的存储(整型,浮点型)

首先我们复习一下我们学过的基本内置类型。

2023-07-31 16:08:03 158 2

原创 C语言-数组

数组是一类相同类型元素的集合。数组中(注意是数据的排列而不是数据)是有一定的规律的,下标代表数据在数组中的序号。在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数即数组长度。

2023-07-17 21:54:06 48 3

原创 C语言-函数

程序调用自身的编程技巧叫做递归。递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。在写递归前注意,递归有两个必要条件:❗❗❗存在限制条件,当满足这个限制条件的时候,递归便不再继续。❗❗❗每次递归调用之后越来越接近这个限制条件。好,解释完定义我们来看一串代码。

2023-07-13 22:02:36 45 1

原创 C语言-循环语句详解(while循环,for循环,do while循环以及关键字continue和)

这个可就要好好好说说了,在for循环中,表达式1为初始化部分,用来初始化循环变量,表达式2就是条件判断部分,来判断条件以便终止循环,表达式3可以用于循环条件的调整。与分支语句不同,当满足条件时,if后面的语句执行,否则不执行,if语句的缺陷是这个语句只会被执行一次,但在实际问题中,同一件事我们需要完成多次,所以c语言引入了。for循环也是c语言中常用的一种循环语句,我认为它相较于其他两种循环来说比较难一些,我们先来看for循环的语法。·我们在for语句的循环控制变量的取值时尽量采用前闭后开的写法。

2023-07-10 21:31:42 271 1

原创 【C语言】-分支语句

分支语句也可以叫做选择结构,根据它的字面意思可以知道,就是说有不同的选择就会有不同的结果,今天这篇文章主要介绍两种分支语句,即if语句和switch语句。

2023-07-07 22:03:42 81 3

空空如也

空空如也

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

TA关注的人

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