- 博客(39)
- 收藏
- 关注
原创 C++重点(1)
## 面向对象核心思想:通常是继承,多态,封装优点:可重用性:通过封装和继承等机制,提高了代码的重用性。可维护性:面向对象编程将代码组织成模块化的结构,使得代码更易于理解、修改和调试。扩展性:通过继承和多态等特性,使得代码的扩展更加容易和灵活。抽象和模块化:面向对象编程允许将复杂系统抽象成一组相互协作的对象,提供了更好的抽象和模块化能力。### 面向过程:特点:1.程序以过程或函数为单位进行实现 2.强调顺序性和线性执行一系列函数。
2025-03-17 20:56:28
876
原创 C语言数据存储和编译链接
1.强转类型法:将int强转成char类型,即仅取int的低字节给char。有符号整型最高位用于表示正负,1表示负数,0表示正数。编译:将C语言代码转换为汇编代码,词法,语法,语义分析。在char类进行计算时,暂时提升为int类进行计算。大端就是高字节存在低地址处,低字节存在高地址处。截断:大字节的转给小字节的,按照小字节截断。小段是高字节存高地址,低字节存低地址。四个阶段:预处理,编译,汇编,链接。预处理:头文件展开,去注释,宏替换。无符号整数的原反补都是一样的。如果是无符号数:高位全补0。
2025-03-16 18:12:49
257
原创 memcpy,memmove,strstr的模拟实现
memcpy与strcpy不同,memcpy可用于任意类型的复制,而strcpy只能用于string类型的复制。
2025-03-15 20:35:47
141
原创 C++模版进阶
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有 目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。优点:模版复用了代码,节约了资源增强了代码的灵活性。缺点:模版导致编译时间变长。当模版编译报错时,错误信息非常乱,不易定位。
2024-11-27 21:45:10
420
9
原创 题目解析:二叉树层序遍历详解
如果不按照层次输出,而是全部输出的话,那就只需要一个队列,将根节点输入,然后再输出根节点,输入根节点的左右节点。然后再输出队列的第一个元素,再输入第一个元素的左右子树。但是这里需要按层输出,那么我们可以定义一个levelsize,记录每一层里面有多少个数,然后循环递减,每次递减的时候都将数输入到v里面,直到levelsize = 0.这道题需要我们按层输出二叉树里面的各个数据,将其输出的一个二维数组里面。每次levelsize为0的时候,就将其写入vv里面。而且第一层的个数明显是1。
2024-11-22 14:46:52
342
原创 对于C++中stack和queue的认识以及priority_queue的模拟实现
stack 是栈,先入后出,只能从栈尾进行插入,栈尾进行输出。queue是队列,元素先入先出,从队尾插入,队头出。stack和queue的接口都类似,区别仅仅是stack的栈顶元素用top,而queue的队头元素用front。
2024-11-22 14:34:27
510
6
原创 僵尸进程的处理
前面讲过,当父进程结束后,如果子进程再运行一段时间后才结束。此时便没有父进程将其回收,那么该进程就会变成僵尸进程。僵尸进程会造成内存泄漏等问题。那么该如何将僵尸进程回收呢?那么就要用到waitpid和wait两个函数。我们先讲解wait,再讲解waitpid。
2024-11-14 15:55:25
577
原创 fork函数详解
之前我们提到,创建子进程的时候,需要使用fork()函数,其中分别有id ==0和id >0的if函数,但是实验表明,两个if函数中的内容都得到了实现。按照我们之前所学,一个变量同一时间只能有一个值,那到底是怎么满足两个if都实现的呢?
2024-11-13 14:49:21
605
10
原创 题解:电话号码的字母组合
题目给出了string 数字字符串,我们需要将字符串转换为对应的字母,因此可以开辟一个数组,分别存放2-9的数字对应的字母,即我们需要知道,全排列所有的字母是迭代的过程。因此我们可以通过一个level来表示这是第几个数字,也可以表示这是第几层递归。当level为0的时候,即为第一个字母,获取到digits[0]的值后-‘0’,因为字符0和数字0有区别,所以要转换。再通过另一个string存储对应的字母字符串即然后便是依次读取str_1中的字母进行全排列组合。每读取一个便进行一次递归,传的参数进行调整。
2024-10-30 21:00:23
442
1
原创 makefile和make
在写项目时,避免每次都输入gcc/g++,我们可以实现自动化编译来提高软件开发效率。make 是一条命令,makefile是一个文件。
2024-10-19 20:37:22
457
14
原创 Linux权限理解及环境基础开发工具使用
Linux中有两种用户,一种是root用户,另一种是普通用户,二者的权限不一样,即能做的事情不一样。下面我们来细讲一下这些不同。root用户能在Linux系统下做任何事情,而普通用户只能做有限的事情。root用户的命令提示符是“#”,而普通用户的命令提示符是“¥”。
2024-10-16 20:44:27
1036
13
原创 C++中的string类
C语言中字符串是以‘\0’结尾的字符的集合,为了方便操作,C标准库中提供了一些str系列的库函数,接下来我们学习string类。
2024-09-28 17:57:52
1228
1
原创 类和对象(上)
C++中类的定义和C语言中结构体很像,但是是在结构体上面进行了升级,即可以在类中定义函数。并且将结构体进行了升级,即也可以用struct 进行类的定义。class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省 略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或 者成员函数。为了区分成员变量,通常在成员变量的前面加一个特殊标识,如_等。定义在类里面的成员函数默认为inline函数。
2024-08-07 16:16:55
1040
4
原创 C++入门基础
命名空间的关键词是namespace,后面跟命名空间的名字,然后接一对{},{}中即为命名空间的成员,可以包含变量,函数等。int a= 0;int a = 1;在调用的时候通过::实现调用。namespace的本质是定义一个域,这个域独立于全局域,不同的域可以定义同名变量。在全局域定义了一个a,然后在namespace里面定义了一个同名的a。C++中的域有局部域,全局域,命名空间域和类域。
2024-08-02 18:00:25
1566
12
原创 一篇文章教会你栈和队列
依旧是将结构体和数据类型重命名便于使用。跟顺序表一样,有一个容量,有一个有效数量,还有一个指向数组的指针。队列的底层一般是单链表。为了更好的在链表中实现队的操作,队列的结构体需要一个头结点和一个尾结点,以及一个记录有效个数的size。而头结点和尾结点则是结点结构体,包含一个结构体指针和一个数值。
2024-07-19 23:18:00
1071
5
原创 一篇文章教你学会双向链表
双向链表全称是双向带头循环链表。带头指的是有一个哨兵位结点,该结点不存储有效的数据,作哨兵作用。双向链表的结构如下:双向链表每个结点有两个指针,一个next指针指向后面的结点,一个prev指针指向前面结点。哨兵位的prev指针指向尾结点,尾结点的next指针指向哨兵位。我们还是将链表和数据进行重命名,为了后面更好的使用。结构体里面需要有两个结构体指针,以及结点存储的数据。
2024-07-19 22:08:12
451
5
原创 深入理解指针2
指向字符的指针称为字符指针。基本的定义格式如上图。需要注意,字符指针只能指向字符,而不是字符串。如果想要指向字符串,即将字符串存入到数组里面,那就是我们下面要介绍的数组指针了。
2024-06-05 22:29:02
1645
原创 冒泡排序c语言指针实现
它重复地遍历要排序的列表,比较相邻的两个元素,并且交换它们的位置,直到整个列表按照从小到大(或从大到小)的顺序排列。冒泡排序的名字来自于在排序过程中较大(或较小)的元素会逐渐“浮”到列表的顶端。
2024-05-20 22:20:30
533
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人