- 博客(25)
- 收藏
- 关注
原创 C/C++内存管理与初阶模板
在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会free一定会释放空间,而析构函数不一定会释放空间new的原理1. 调用operator new函数申请空间2. 在申请的空间上执行构造函数,完成对象的构造delete的原理1. 在空间上执行析构函数,完成对象中资源的清理工作2. 调用operator delete函数释放对象的空间new T[N]的原理。
2025-07-30 16:52:23
784
5
原创 C++中既重要又困难的部分—类和对象
class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前面或者后面加 _ 或者 m 开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。
2025-07-28 16:14:14
901
9
原创 初识C++——开启新旅途
定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下面的rand不在冲突了C++中域有函数局部域,全局域,命名空间域,类域(四大域,很重要);域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。
2025-07-19 17:29:45
6564
10
原创 数据结构——堆
1、若 i>0 , i 位置结点的双亲序号: (i-1)/2;i=0 , i 为根结点编号,⽆双亲结点。3、 若 2i+2,右孩⼦序号: 2i+2 , 2i+2>=n 否则⽆右孩⼦。2、若 2i+1,左孩⼦序号: 2i+1 , 2i+1>=n 否则⽆左孩⼦。此处已经在下面文章中的详细讲解,各位可以跳转阅读。
2025-07-12 15:01:51
471
3
原创 数据结构—排序
基本思想:希尔排序法又称缩小增量法;先选定一个整数(通常是gap=n/3+1),把待排序数据分成各组,所有距离相等的数据分在同一组内,并对每一组内的数据进行排序,然后gap=gap/3+1得到下一个整数,再将数组分成各组,进行插入排序,当gap=1时,相当于直接插入排序基本思想:每一次从待排序的数据元素中选出最小和最大的一个元素,存放在序列的起始/末尾位置,直到全部待排序元素排完基本思想:是一种二叉树结构的交换排序方法;
2025-07-10 19:50:00
5761
5
原创 数据结构——队列
QueueNode是结点结构,其中包含数据元素和下个结点的指针Queue是队列结构,其中包含头尾两个结点的指针,目的是为了降低算法复杂度。
2025-07-04 21:33:13
244
2
原创 数据结构——双向链表
2>反之,创建一个临时指针tmp保存phead的下一个结点,并且寻找最后一个结点,保存最后一个结点前一个结点,释放最后一个结点,把前后结点连接。<2>反之,保存哨兵位的下一个结点,再连接前后结点。<1>只有哨兵位,创建一个新结点,并且连接前后结点。<1>只有一个哨兵位,则直接返回,不用进行操作。
2025-07-02 02:20:54
365
2
原创 数据结构——单项链表
2> 反之,创建临时指针tmp,循环直到找到pos的上一个结点,创建一个新结点tmp1,并且按照tmp->pos->tmp1的方式连接起来。<2>反之,创建两个指针,prev用来存储被删结点的上一个结点,ptail来寻找最后一个结点,再进行空间释放操作。<2> 反之,创建一个新结点,并且创建一个临时指针指向原来头结点的下一个结点,再接入这个结点。<1>当链表一个结点都没有时,直接创建一个结点,并且把指针*pphead指向这个新结点。<2>反之,创建一个临时结点ptail,找到最后一个结点,接入新的结点。
2025-07-01 01:22:49
378
1
原创 数据结构——顺序表
一开始为0,初始为四个字节;一开始非0,二倍增容。(2)dest处是value的数据,src为不是value的数据。=size,则把pos之后的数据向前移动一位。因为数组是STNode*类型,所以需要将arr置空。(1)若pos=size,则为尾删,直接size减1。先检查空间是否足够,足够则不用扩容,否则扩容。size减1并且把后面的数据全部往前移动一位。assert函数:判断指针是否有效。逻辑结构:线性(连续的一条直线)只用将有效数据个数size减一。(1)dest站岗;把所有的数据往后移动一位。
2025-06-29 00:33:03
190
1
原创 C语言复习(12)——编译、链接和预处理
在预处理内,直接被替换name:名字stuff:内容其中的parament-list是一个由逗号隔开的符号表,它们可能出现在stuff中注意:参数列表的左括号必须与name紧邻,如果两者之间有任何空⽩存在,参数列表就会被解释为stuff的⼀部分提示:所以⽤于对数值表达式进⾏求值的宏定义都应该⽤这种⽅式加上括号,避免在使⽤宏时由于参数中的 操作符或邻近操作符之间不可预料的相互作⽤在编译⼀个程序的时候我们如果要将⼀条语句(⼀组语句)编译或者放弃是很⽅便的。因为我们有条件编译指令常见的条件编译指令。
2025-04-25 15:34:41
1522
原创 C语言复习(11)——动态内存管理与文件操作
若我们想要使数据持久化保存,我们可以使用文件1、 磁盘(硬盘)上的文件是文件2、程序文件3、数据文件4、文件名5、 二进制文件和文本文件。
2025-04-24 13:59:06
1384
原创 C语言复习(9)——内存函数与数据在内存中的储存
特点:1、因为接受参数是void*类型,所以可以接受任意类型的数据;但是,在引用时必须强制类 型转换2、memcpy处理的是两块不重叠的内存数据的拷贝memmove可以同时处理重叠与不重叠两块内存的拷贝3、对于memcpy函数,能否处理重叠部分内存数据取决于编译器本身(vs2022可以)4、内存重叠的定义:是指两个或者多个内存区域有部分或者全部地址空间是相同的情况5、memcpy的模拟实现**防止出现内存重叠,创建两个数组,开辟两块空间区域。
2025-04-22 19:19:59
633
原创 C语言复习之我在力扣刷经验
5、编码不能连续比较,例如(0<a<b);char类型字符可以可以使用ASCII直接比较。1、通过scanf函数的%m格式可以指定输入的域宽,按此宽度截取数字;2、通过printf函数的%0m格式控制符,输出数值时指定左侧补使用的空位置自动填0。%02d---至少两位数,不够填充0(%d000……8、%#o/%#ox可以打印有前缀的八/十六进制数。6、辗转相除法,可以计算最大公约数和最小公倍数。7、%-md,使得整型之间空m格打印。
2025-04-20 19:42:21
239
1
原创 C语言复习(5)——指针(1)
1、&:取地址符号2、*:解引用操作符3、去掉变量名,就是类型4、指针变量的大小是由环境决定的,4\85、指针类型决定了解引用操作符*有多大权限,一次可以访问几字节6、指针+-整数,,是由类型决定的7、void*指针不能进行解引用操作和+-整数操作;void*指针可以接受各种类型的指针。
2025-04-20 14:19:05
241
原创 C语言复习(4)——操作符
算数操作符、移位操作符、下标引用操作符、结构成员访问操作符、逻辑、函数调用......>>:右移操作符:1、算术右移:右边抛弃,左边补符号位。不能移动负数位,例如:10>>-1,在C语言中未定义。(4)位操作符(操作数必须为整数)(补码操作)无符号整数没有符号位概念,所有位都是数值位。&:按位与:同时为1,为1;|:按位或:有1即为1,同时为0则为0。<<:左移操作符:左边抛弃,右边补0。反码:符号位不变,其他位按位取反。^:按位异或:相同为0,不同为1。~:按位取反:1变0,0变1。
2025-04-20 01:16:30
212
1
原创 C语言复习(3)——数组与函数
3、static修饰全局变量(默认具有外部链接属性),static修饰之后,变成内部链接属性,只能在所在的源文件内使用,即使声明了也无法使用。2、使用建议:希望一个变量出了函数,值还想保留下来,等下次进入函数后继续使用,可以使用static函数修饰变量。1、static修饰局部变量使得生命周期变长,但是不等同与变成全局变量、、作用域没有发生变化。3、局部变量的生命周期:进入作用域变量创建,生命周期开始,出作用域生命周期结束,变量销毁。3、必要条件:1、递归存在限制条件,当满足这个限制条件就停止递归。
2025-04-20 00:29:07
226
原创 C语言复习(2)——分支与循环
if语句if(表达式){}else{}1、表达式为真进入循环,为假不进入循环2、0为假,非0为真条件操作符(三目操作符)exp1?exp2:exp3;1、exp1为真执行exp2;exp1为假执行exp3逻辑操作符1、!:逻辑取反操作符,改变真假2、&&:并且3、||:或者4、具有短路现象 (1)&&:当左操作数为假,整个表达式为假 (2)||:当左操作数为真,整个表达式为真switch语句switch(exp){case1:case2:......default:statement;}1、swit
2025-04-19 19:42:54
237
原创 C语言复习(1)——基础概念
占位符%d:打印整型 %f:打印浮点型 %lf:打印双精度浮点型 %ld:打印long类型变量%o/%O:打印小写/大写八进制数字 %x/%X:打印小写/大写十六进制数字%c:打印字符 %s:打印字符串 %p:打印十六进制的地址关键字1、具有特殊意义,是给C语言使用的2、创建的变量不能与关键字重复3、关键字也不能自己创建ASCII值A~Z:65~90a~z:97~1220~9:48~57字符串1、末尾有一个看不见的\02、strlen()计算字符串长度时遇到\0
2025-04-19 18:18:22
225
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅