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

原创 C++友元(通俗易懂)

友元关系破坏了类的封装性,因此应慎重使用。友元关系应该只在必要的情况下使用,以保持良好的封装性和代码可维护性。友元关系不具有继承性,即如果类A是类B的友元,类B是类C的友元,类A并不自动成为类C的友元。友元关系仅影响对私有成员的访问权限,不影响对保护成员和公共成员的访问权限。友元关系是单向的,即如果类A是类B的友元,则类B并不自动成为类A的友元。使用友元函数friend,使一个类或函数可以访问另一个类的私有成员。

2024-04-16 11:58:38 180

原创 C++深拷贝和浅拷贝

简单复制操作,它只复制对象的引用或指针,不复制实际的数据。原对象和副对象引用相同内存位置,共享相同的数据。其中一个对象修改了共享的数据,另一个对象也会受到影响。

2024-04-11 20:29:19 742

原创 C++构造函数调用原则

1. 与类名相同,没有返回类型(包括void)。2. 可以有参数,用于给对象的数据成员赋初值。3. 可以重载,可以有多个构造函数,根据参数的不同进行区分。

2024-04-11 20:12:36 327

原创 C++构造函数和析构函数介绍

构造和析构必须实现,若不提供,编译器会自行创建一个空构造和虚构。对象在摧毁前,会自动调用析构函数,而且只调用一次。创建对象时,构造函数自动调用,而且只调用一次。在主函数中调用构造函数,构造后会释放析构函数。析构函数不可以有参数,不可以发生重载。构造函数时可以有参数,可以发生重载。函数名与类名相同 在名称前加~没有返回值,不用写void。没有返回值,不用写void。

2024-04-11 09:32:08 198

原创 C++函数默认参数(通俗易懂)

当函数被调用时,如果只提供一个参数,那么第二个参数将使用默认值0。函数调用时,如果没有提供对应参数的值,将使用默认值作为参数的值。在函数声明或定义中为参数提供的默认值。函数只传递一个参数7,将使用默认值0,的值,将使用它们的默认值。当参数未赋值时默认为0。的值为3,返回结果为8。的值为0,返回结果为7。函数并传递参数5和3,函数时,如果没有提供。,它接受两个整数参数。函数中,我们首先调用。

2024-04-09 10:38:48 257

原创 C++引用(通俗易懂)

初始化和使用:引用在声明时必须进行初始化,并且一旦初始化后就不能改变引用的目标对象,而指针可以在任何时候进行初始化和重新赋值。引用是一种别名,引用在声明时必须初始化,在初始化后一直引用同一个对象,不能改变引用目标,存在唯一性引用后不可修改目标。引用还可以用于创建引用类型的数据结构,引用类型的成员变量或引用类型的容器,以便更方便地操作对象。返回引用时需要确保被引用的对象的生命周期足够长,以避免返回的引用指向无效的内存地址。操作符:指针可以进行指针运算和解引用操作,而引用不支持指针运算和解引用操作。

2024-04-09 10:25:49 236

原创 C++通讯录(添加、显示、删除、查找、修改、清空、退出)功能实现

【代码】C++通讯录(添加、显示、删除、查找、修改、清空、退出)功能实现。

2024-04-09 10:19:03 118

原创 C++引用作为返回值在32位,64位

无论是在32位还是64位系统中,需要注意的是确保被引用的对象的生命周期足够长,以避免返回的引用指向无效的内存地址,导致未定义的行为。另外,编译器通常会在编译时进行优化,对于返回引用的函数,它可能会使用寄存器来保存返回值的地址,而不是在堆栈中创建临时对象。在使用引用作为返回值时,需要确保被引用的对象的生命周期足够长,否则返回的引用将指向无效的内存地址,导致未定义的行为。同样地,编译器通常会对返回引用的函数进行优化,可能会使用寄存器来保存返回值的地址,而不是在堆栈中创建临时对象。

2024-04-09 09:03:52 156

原创 C语言中二维数组

初始化:‘’ int arr1 [1][2] ={1,2,3,4,5,6,7,8,9} ,[行] , [列],%p :打印地址,在内存中连续存放,必须有列不能没有行,在初始化的前提下。也表示首元素地址,表示的是第一行地址,如果数组名+1则是第二行地址。访问数组元素时,超出元素边界,会导致报错或打印随机数,地址[0][0]到[0][1]由高到低存放,列的计算:第一行大小/第一行第一个元素大小。可以把二维数组看为一维数组的数组,行的计算:总数组大小/第一行大小。用sizeof来计算数组元素大小。

2023-12-26 20:25:56 381 1

原创 C语言中一维数组

数组是一个相同类型元素的集合在C99标准之前,数组的大小必须是常量或者常量表达式在C99之后,数组的大小可以是变量,为了支持变长数组。

2023-12-26 20:21:49 439 1

原创 C语言中函数递归:

Nonstatic(栈对象),减少每次调用递归和返回时产生和释放nonstatic对象的开销,还可以保存递归调用的中间状态。某些问题会存在死循环死递归,可能导致一直在开辟栈空间,最后导致栈空间耗尽的情况,自己调用自己,在函数内部调用自己,解决重复执行或相似任务问题。递归要用限制条件,不然会死循环,满足这个条件后不再继续。%u打印无符号整数,unsigned。%d打印有符号整数(有正负数 )每次递归调用都要接近这个限制条件。这样的形象称为栈溢出。

2023-12-22 12:28:44 394

原创 Assert断言函数:

如果表达式为正则正常运行,表达式为假则程序出错,调用abort终止程序运行。只能判断单个条件,多个条件时,程序无法判断哪个条件失败,就是只能判断一次,Void assert(int expession条件表达式)用来避免显而易见的错误,而不是处理异常的。判断一个程序值是否会出错,是否可修改。头文件<assert.h>错误可避免,异常不可避免。

2023-12-21 14:14:23 390

原创 C语言中函数(参数)形参与实参:

函数声明:函数叫什么、参数是什么、返回类型是什么,具体存不存在函数声明决定不了。一般出现在函数之前,先声明后使用,函数声明一般放头文件中,便于源文件使用。Main(主函数)在同一个项目中只能调用一次Void无返回值Int double 类型返回值函数声明:函数叫什么、参数是什么、返回类型是什么,具体存不存在函数声明决定不了。一般出现在函数之前,先声明后使用,函数声明一般放头文件中,便于源文件使用。

2023-12-21 14:13:22 527

原创 C语言中scanf、getchar、sizeof的作用

Scanf和getchar都是输入字符串,它们通过输入缓冲区获取字符串,并不是通过键盘获取。例如,scanf("%d", &num)可以读取一个整数并将其存储在num变量中。例如,char c = getchar()可以读取一个字符并将其存储在c变量中。它的语法形式是sizeof(a),其中a可以是数据类型、变量名或任意表达式。注意,getchar函数每次只能读取一个字符,而不是整个输入行。它可以读取不同类型的数据,如整数、浮点数、字符和字符串等。Scanf函数,可以从键盘按指定的格式读取数据。

2023-12-06 16:30:41 370 1

原创 Online Judge(OJ)系统的基本认知

IO(Input/Output)型问题指需要对输入数据进行处理并产生相应输出结果的编程问题。这类问题通常要求编写程序从标准输入读取数据,对数据进行处理,然后将结果输出到标准输出。结果返回:评测完成后,OJ返回程序的评测结果,包括是否通过、运行时间、内存消耗等信息。只需写出函数代码,不需要写头文件、主函数,代码提交后会和oj服务器代码合并,再运行。评测过程:OJ对用户提交的程序进行编译、运行、评测,检查程序的正确性和效率。用户提交:用户选择一种编程语言,编写程序解答,提交到OJ系统进行评测。

2023-11-24 11:54:10 1035 1

原创 C语言关键字typedef、static、register、#define的基本认知

静态区 静态变量,影响生命周期变长,不汇编编译代码,每次取第一次定义地址,在编译期间已经汇编编译代码。宏名后面带参数,参数无类型,例如: #define 宏名:ADD 内容:(x,y)((x)+(y))2.修饰全局变量:在函数外定义变量,引用外部变量时,可利用extern声明外部符号。总结:static相当于private静态,默认编译创建内存固定使用,无法在外部调用,正常定义时在栈区中创建动态地址,每次编译分配地址,加了static后在静态区创建固定。(静态区,定义作用域,不定义则存在栈区)

2023-11-24 11:42:37 497 1

原创 顺序表(数据结构基础认知)

顺序表其实就是一个数组,用连续内存(物理地址)连续存储,不能跳过。数据是线性的,常见线性表:顺序表、链表、队列、字符串、栈·……小提醒:命名风格和STL走,后续学习STL标准C++组件库。满了不能插入,缺点给多少合适,给小不够,给多浪费。满后,一次扩2倍,适中空间,看情况来决定。写完一个小模块,运行看是否出错,不要写全再调试。链表用指针一块一块连起来。先用,如果用满重新开空间。空间足够,直接插入数据。整个顺序表没有空间。

2023-11-22 17:27:01 114

原创 C语言中 \0 ‘0’ “0” 的区别(通俗易懂)

例如,字符串"hello"在内存中实际上是{'h', 'e', 'l', 'l', 'o', '\0'}。例如,在处理字符串时,空字符'\0'表示字符串的结束,字符'0'和字符串"0"都表示字符'0'的值。这个字符串,在内存中实际上是{'0', '\0'},即字符'0'和一个空字符。'0':这是字符0,它的ASCII码值十进制是48。'\0':是一个空字符,用于标记字符串的结束。"0":这是一个只包含一个字符的字符串。字符串是字符数组,'\0'作为结束标志。0:这是一个整数值,用于表示数字0。

2023-11-22 17:22:31 2230

原创 轮转数组算法解析(通俗易懂)

调用函数Rotate,前n-k逆置,再后k逆置,后整体逆置。给一个整数数组,将数组中的元素向右旋转k个位置,k非负数。Left和right一直交换,利用tmp储存。次的功能,通过三次旋转操作来实现整体的旋转。函数,分别对数组的不同部分进行旋转操作。,表示需要旋转的数组部分的左右边界。循环来进行数组元素的交换操作,直到。,表示数组的首地址,一个整型变量。表示数组的大小,以及一个整型变量。为止,实现了数组元素的旋转操作。函数接受一个整型指针。当k大于长度,取余。函数接受一个数组指针。

2023-11-21 20:01:58 42

原创 消失的数字算法(3种思路解析)

思路2:(0+1+2+3+n)-(a[0]+a[1]+a[2]+a[n-1]) 时间复杂度O(N)给一个值x=0,x跟[0,n]所有值异或,x再跟数组中每个值异或,最后x就是缺失数字。思路1:Qsort快排:时间复杂度O(n*log2N)1)整数0到sumsize 相加给Sum1。分析每种思路复杂度,选择复杂度优的即可。2)数组sums元素相加给sum2。3)sum1-sum2得出缺失数字。

2023-11-20 22:17:42 146

原创 函数奇偶性

函数有界性 复合函数性质 奇函数偶函数四则运算性质 常见的奇函数与偶函数 函数奇偶性

2023-11-20 15:24:58 350 1

原创 数据结构(时间复杂度)

时间复杂度:O(N^2),不需要精确执行次数,只需大概执行次数,用大O的渐进表示法。渐进表示法:描述函数渐进行为的数学符号,定义为函数T(n)=O(f(n)),有说明:M>N 则O(M)、N>M则O(N)、M和N差不多大,都可以用。当一个算法输入不同,时间复杂度不同,时间复杂度做悲观预期,看最坏情况。T(n)以f(n)为界或受限f(n),T(n)称为此算法时间复杂度,O(n^2)叫平方阶,操作数据与输入数据规模n的比例为二次平方。O(n)叫线性阶,操作数量与输入数据规模n为正比。估算代码循环逻辑执行次数。

2023-11-13 23:28:48 26

原创 JAVA数组冒泡排序算法(从小到大/从前往后)

java 基础冒泡排序算法

2022-10-24 15:31:29 5085 2

空空如也

空空如也

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

TA关注的人

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