- 博客(24)
- 收藏
- 关注
原创 C++类和对象的学习四——(下篇)
1.拷贝函数如果不涉及到资源管理,一般是在堆的资源,就不需要自己写。2.操作符号重载:1.使用对象:自定义类,通过函数的方式来自己给出新的操作符的意义2.不能于原操作符相违背,加法的含义不能变为减法;3.关键字是operator ,函数名是operator+ 操作符号,有几个操作数就几个形参,前置加加和后置加加的区别就是参数是否带整形。需要注意的是在类里面定义oprator参数天热自带一个this指针,所以如果有俩个操作数,函数形参里面就只写一个。4.this 指针前面有 cons
2022-05-18 18:41:27
170
原创 一看就懂的函数栈帧的创建和销毁
我们从3个角度高度概括总结函数的栈帧和创建前后到底他做了什么下来小伙伴们可以结合汇编代码经行分析1.为形参开辟空间。2.压入下一条指令的地址,压入前一个函数的栈底的地址为的是函数调用结束时让edp能够回到之前函数的栈底。3.为函数开辟空间esp经行跳跃,并压入其他寄存器的值,再给开辟好的函数栈帧初始化,为内存分配内存和值4.将返回值压入寄存器,执行ret指令。...
2022-05-05 17:32:14
139
原创 学好C++的语法细节——初步学习C++(—)(你真的了解他的语法细节吗)
先从我们都熟悉的hello world开始#include<iostream>using namespace std;int main(){cout<<"hello wolrd"<<endl;return 0;}在使用cout这个标准输出函数前我们需要引入这个函数和头文件,很多人对此表示不解我为什么要引入这个俩个东西呢?这里我们将层层解释,首先包含的头文件是c++的标准库,里面的函数啊可能用命名空间封装起来,而c++标准的库函数就是在std,这个命名
2022-04-26 18:01:13
876
4
原创 原数组建堆(向上调整和向下调整)
对于一个给定的数组我们不开设额外的空间利用向上调整算法和向下调整算法进行建堆1.向上排序做法建堆依次对数组的其他元素进行向上调整即可;向下调整从最后一个叶子节点的父亲节点开始向下调整...
2022-04-14 17:31:05
176
原创 自定义类型:结构体的位段,联合体,枚举知识点
1.结构体的位段:(针对结构体)在结构体变量后面加上(:数字)就表示位段,规定:先按照需要开辟变量大小相对应的空间,例如char类型的变量开辟了一个字节,一字节是8个比特位,a先使用了4个比特位,还剩4个比特位,c发现位置能够满足他需要的3个比特位不用再开辟空间了再使用掉后面的3个比特位,总共只开辟了 一个字节所以大小是1。可以发现这样做节省了空间。2.能够使用位段的结构体成员是int,unsigned int ,signed int ,char类型的变量。缺点:没有跨平台性为什么呢?
2022-04-04 23:25:15
277
原创 结构体的内存对齐
结构体的内存对齐是让该变量对齐数的满足被偏移量整除的一种存储方式vs的默认对齐数是8但不管第一个元素的对齐数是多少他从0偏移处开始存放我们还可以运用预处理指令改变他的默认对齐数可以发现当设置默认对齐数为一后结构体的大小是6下面介绍一个计算结构体成员关于结构体起始位置的函数offsetof(结构体名字,结构体变量名)头文件为<stddef.h>2.为什么要设置结构体内存对齐呢1.平台原因,不是所以的硬件都支持在任意位置取任意数据2.数据结构的原因,这样的数据会让c.
2022-04-03 20:27:04
551
2
原创 树的基本概念和2叉树中重要的几个性质
1.树的基本概念:其中节点的度,叶节点,节点的层次 ,树的度,树的高度,节点的祖先是重点概念,我们要重点掌握以后会经常用到。2.树的性质:设树有n个节点,则树有n-1条边,设该树的节点的度为n,节点的度为n的节点的个数计为N(n)则有n=N(n)+N(n-1).......N(2)+N(1)+N(0).边与节点的关系:n-1=N(n)*n + N(n-1)*(n-1) + .......N(2)*2+N(1)*1+N(0)*0;利用这俩个关系我们可以求解度为n的节点的个数N(n.
2022-03-31 16:11:58
329
2
原创 【无标题】 关于栈和队列的俩大经典操作
首先看栈,经典操作之一用俩个栈实现队列基本操作,我们这里重点将逻辑,直接上图队列的顺序是先进先出,对于queque元素的顺序为123,那么如何用俩个栈去实现呢?通过图我们可以发现 将要插入的元素先压入空栈,然后将不为空的栈的元素压入空栈里面就可以按照321的顺序压入栈,这样对stack2出栈就可以达到队列先进先出的后过了,通俗的将就是我们将要最新插入的元素压入栈底,这是保证最后进的元素最后出,然后将之前入栈的元素依次出栈,每次出栈的元素都是最后进的,这样压栈后自然只能后出,就保证了队列的先.
2022-03-30 00:14:56
84
原创 数据结构还在迷茫的同学快来啦,挨打1周总结的栈的细节与逻辑总结
是不是很多同学对数据结构这段感觉听懂了但是又感觉稀里糊涂的呢?没错我也是这样的,但是经过一周的反思和总结,我觉得这样理解数据结构会让你醍醐灌顶:话不多说,开始干货教学,请大家跟着我的思路来理解其中的奥妙:先从栈开始讲起:我们知道栈是一个先进后出的一个结构,那么为了描述这个结构我们需要什么呢?答案是栈顶元素,栈的大小,和栈这块空间,所以我们必须创建一个结构体变量来描述这3个量,直接上图,而这个真正的栈是我们自己malloc出来的,我们实际操作的时候是对真正的栈进行操作,当栈操作完毕后,
2022-03-27 17:20:29
615
4
原创 2维数组中的数组名
2维数组在计算机中的存储模式本质上还是一维的模式,下面我们来看一段代码。我们发现对于arr[1]来说编译器并没有报出警告,也就是说我以%p的形式打印arr[1]是没有问题的,也就是说arr[1]本质上就是地址,可以尝试如果以%p的形式打印arr[1][0]编译器会给我们警告说printf函数的第二个函数需要%p类型的但是实际类型为int,我们类比一位数组,可以得到这样一个结论,arr[1]为数组名,本质上是地址,他是一个指针变量,存放的是arr[1][0]元素的首地址...
2021-12-10 00:31:56
482
9
原创 多组输入中的scanf问题
当SCANF函数为能成功读取数据时就会返回eof所以而是scanf函数在输入完一组数据敲下回车,输入缓冲区下次读入时会停止读读入,所以可以用getchar来清理每次的换行符号
2021-12-01 12:53:37
840
原创 关于左对齐和左对齐的一些简单理解和杨辉3角的算法思想
首先我们来谈谈左对齐和右对齐的实际效果,根据定义是比较难理解左对齐和右对齐的实际效果的,当你上手调试了之后会发现是左对齐是对你的数据不满所需的位数时在你的数据左边补上和空格个数,而右对齐是指在你的数据右边补上所差的空格个数。好,我们再开谈谈杨辉3角形的算法思想首先我们通过观察杨辉3角形状的图形可以看到从第3行开始每一行的最后和第一个元素为1;中间元素的值为上一行同列和上一行列数减去一的元素的值之和。找到规律了,所以我们想分情况来设计这来种不同的情况这里对第2种情况做研究,当行数从第3行开始时,因为我们要俩个
2021-11-27 18:58:33
539
原创 今天开始学习编程
我是一名来自河南省的学生,我目前大一准备有选择性的学习学习编程,不仅仅只是学习语言更重要的的是学习其思想,我的目标是能进一些比较好的互联网公司
2021-10-17 21:53:01
67
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人