- 博客(25)
- 收藏
- 关注
原创 进程的控制
一个父进程希望复制自己,使父子进程创建一个新进程,新进程为子进程,原进程为父进程进程调⽤fork,当控制转移到内核中的fork代码后,内核做:1、分配新的内存块和内核数据结构给子进程2、将父进程部分数据结构内容拷贝至子进程3、添加子进程到系统进程列表当中4、Fork返回,开始调度器调度写时拷贝父子代码共享,父子在不写入时数据也是共享的,当任意一方试图写入时,便以写时拷贝的方式生成一份副本,这样就保证了进程的独立性。
2025-01-25 10:01:44
721
原创 深度理解进程的概念(Linux)
进程=PCB+自己代码和数据PCB是存放进程的状态,代码地址,数据地址,id,优先级等信息的,里面包含进程的所有属性,通过PCB提供的属性来对辰戌进行管理,在Linux操作系统中PCB是task_struct.我们历史上执行的所有指令,工具,自己的程序,运行起来,全部都是进程。
2024-11-27 21:05:30
856
原创 二叉搜索树
二叉搜索树又称二叉排序树,因为它的中序遍历可按大小打印数据若它的左子树不为空,则左子树上面的所有结点都小于或等于根结点的值;若它的右子树不为空,则右子树上所有结点的值都大于根结点的值;它的左右子树也分别为二叉搜索树;二叉搜索树中可以支持插入相等的值(如multimap/multiset),也可以不支持插入相等的值(如map/set)
2024-11-17 17:21:31
533
原创 二叉树(c语言)
树是⼀种非线性的数据结构,它是由 n(n>=0)个有限结点组成⼀个具有层次关系的集合,把它叫做树是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,而叶朝下的。树型结构中子数不能有交集,否则就不是树形结构子树是不相交的除了根节结外,每个结点有且仅有一个父结点一棵N个结点的树有N-1条边。
2024-11-11 21:13:25
872
原创 多态(c++)
多态分为编译时多态(静态多态)和运行时多态(动态多态),函数重载和函数模板就是编译时多态,它们传不同的类型的参数就可以调用不同的函数,通过参数不同达到多种形态,因为它们实参传给形参的参数匹配是在编译时完成的,所以叫编译时多态运行时多态,在完成某个行为(函数),可以传不同的对象就会完成不同的行为,达到多种形态。
2024-11-09 12:51:25
932
原创 继承(c++)
类成员/继承方式public继承protected继承private继承基类的public成员派生类的public成员派生类的protected成员派生类的private成员基类的protected成员派生类的protected成员派生类的protected成员派生类的private成员基类的private成员在派生类中不可见在派生类中不可见在派生类中不可见1、基类private成员在派生类中无论以什么方式继承都是不可见的。
2024-11-08 19:30:29
1113
原创 list(c++)
list是STL容器中的容器,且元素在容器中的位置是分散的并与大小无关。list的底层是双向链表,其优势是在任意位置插入和删除元素的时间复杂度为O(1),但无法通过“下标[ ]”直接访问元素,需要通过从头(尾)遍历元素找到元素,多用于需要大量数据的插入和删除,且对数据的随机访问比较少。 二、list 的iterator的使用 三、list capacity 接口说明 empty 检测list是否为空,是返回true,否则返回false size
2024-10-30 10:58:25
1272
原创 string类(c++)
sting类是c++标准库的一个重要部分,主要用于字符串处理。在c语言中,字符串是以“\0”结尾的一些字符的集合,为了方便操作,c标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP(面向对象)的思想,而且底层空间需要用户自己管理,稍不留神哈可能会越界访问。
2024-10-19 17:18:51
1086
原创 类和对象(初始化列表、隐式类型转换、static成员和友元)
1、前面实现的构造函数,初始化成员变量主要使用函数体内赋值,除此之外,构造函数初始化还有一种方式,就是初始化列表,其使用方式是以一个冒号开始,接着是以一个逗号分隔的数据成员列表,每个成员变量后面可以跟一个放在括号中的初始值或表达式。(图1)2、每个成员变量在初始化列表中只能出现一次,语法理解上初始化列表可以认为是每个成员变量定义初始化的地方。引用成员变量,const成员变量必须在定义的时候初始化,所以必须放在成员列表。
2024-10-05 18:50:25
637
原创 模板(了解类模板和函数模板)
泛型编程:编写与类型无关通用代码看,是代码复用的一种手段,模板是泛型编程的基础。利用函数重载实现一个通用的交换函数函数重载的劣势1、重载的函数仅仅是形参类型不同,逻辑是一样的,只要有新的类型出现时,就需要再重载对应的函数。2、代码的可维护性比较低,一个出错可能导致所有的重载均出错但是如果再c++中存在一个模具,我们告诉编译器一个模子,让编译器自己根据不同的类型利用该模子来生成代码,就事半功倍。
2024-10-05 18:50:04
761
原创 类和对象(实例化和this指针)
1、定义格式(代码1)C++中struct也可以定义类,C++兼容C中struct的⽤法,同时struct升级成了类,明显的变化是struct中可以定义函数,⼀般情况下我们还是推荐⽤class定义类。2、访问限定符public、private和protected访问权限作⽤域从该访问限定符出现的位置开始直到下⼀个访问限定符出现时为⽌,如果后⾯没有 访问限定符,作⽤域就到 }即类结束。class定义成员没有被访问限定符修饰时默认为private,struct默认为public。
2024-09-12 08:40:11
848
原创 类和对象(类的默认成员函数)
构造函数一般都需要自己写,自定义初始化析构、构造时有资源申请(如malloc或者fopen)等,就需要显示写析构函数拷贝构造和赋值重载,显示了析构,内部管理资源,就需要显示实现深拷贝自定义类型凡事想要用运算符都要掺重载运算符。
2024-09-12 08:39:48
898
原创 C++新手入门
在项目中会有大量的变量和函数的命名,当这些变量和函数存在于全局变量中会引起命名的冲突,命名空间就可以解决这个问题,因为namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量。定义命名空间:namespace只能定义在全局,当然他还可以嵌套定义。项⽬⼯程中多⽂件中定义的同名namespace会认为是⼀个namespace,不会冲突。C++标准库都放在⼀个叫std(standard)的命名空间中。使用命名空间1、指定命名空间使用2、
2024-08-04 16:19:59
919
原创 【C语言】结构体和共用体(联合体)在内存中的大小
1. 结构体的第⼀个成员对⻬到和结构体变量起始位置偏移量为0的地址处2. 其他成员变量要对⻬到某个数字(对⻬数)的整数倍的地址处。3、结构体总体最大对齐数(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的整数倍。4. 如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构体的整体⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)的整数倍。对⻬数 = 编译器默认的⼀个对⻬数 与 该成员变量⼤⼩的较⼩值。在vs中默认的值为8。
2024-06-24 09:35:54
328
原创 【C语言】二分查找法
二分查找法也叫做折半查找法,在生活中我们猜数字,不可能是1,2,3,……这样的猜,一般都会是取中间的数字猜,再看是大了还是小了,再继续在排除的范围内猜中间数,这样就快的多,但是二分查找法只限于在有序序列中查找。
2024-06-23 09:04:53
684
原创 浮点数在内存中的存储
资料来源于毕业就业课。根据国际标准IEEE(电⽓和电⼦⼯程协会) 754,任意⼀个⼆进制浮点数V可以表⽰成下⾯的形式:表⽰符号位,当S=0,V为正数;当S=1,V为负数。M 表⽰有效数字,M是⼤于等于1,⼩于2的。表⽰指数位。比如:十进制5.0,写成二进制为101.0,写成科学计数法就是1.01*2^2套进公式S=0,M=1.01,E=2。对于32位的浮点数,最⾼的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M。
2024-06-22 10:10:38
320
原创 【C语言】深入理解关于数据在内存中存储的7个题目
以上代码的运行结果:解析对a:-1在内存中源码反码补码a是char类型 只能存1个字节即8个比特位,存最低位的一个字节11111111-a存的a整形提升后的(因为以%d形式打印要整形提升,提升 的是符号位,即补码前面补1,无符号的整形提升前面补的是0)取反加1得到源码,所以a打印出来的就是-1对b:b与a同理。11111111b在内存中存的-1b整形提升后内存中存的补码取反加一得到源码,答应出来也是-1对c。
2024-06-22 09:33:13
1975
原创 辗转相除法求最大公因数和最小公倍数(C语言)
原则:较大的数a除以较小的数b,将除数b赋给原来的被除数a,将余数赋给原来的除数b,当余数为0时,得到最大公约数为b。
2024-06-20 21:41:16
304
1
原创 C语言中的分支和循环语句
语法格式如下:注意点:1、在C语言当中表达式成立的话为“非0”,若不成立则表达式就为“0”,而只有当表达式为“非0”时if语句才会执行,否则不会执行该if语句。如下:图中应为if里面的a是0,所以控制台没有打印任何东西;而当a的值为“非0”是,控制台就会打印相应的值。
2023-10-28 20:04:40
256
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人