自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 系统调用open

exit(0)相当于「通知搬家公司来收最后一波快递」—— 进程退出时,会强制清空printf父进程退出:把自己快递柜里的「A」送上门(终端显示一个 A);子进程退出:也把自己复制来的快递柜里的「A」送上门(终端又显示一个 A)。应用程序想做特权操作(比如 open 文件),会把 “业务编号” 写在 Eax 里,触发 0x80 中断喊内核来帮忙,内核通过编号找到对应的处理函数,完成操作后把结果返回。系统调用是应用程序直接请求操作系统内核帮忙做事的接口,属于 “底层特权操作”。

2025-12-25 14:46:39 478

原创 地址空间详解-fork复制进程

父进程没有wait子进程但是父进程结束了,子进程变成了孤儿进程,系统会为这个子进程重新分配一个父进程,这个父进程一定会收到子进程的退出码。(1)运算器(cpu):也叫算数逻辑单元,完成对数据的各种常规运算,如加减乘除,也包括逻辑运算,移位,比较等。:进程地址空间的高地址部分,属于操作系统内核,用户进程无法直接访问,用于内核代码、数据、硬件管理等。(4)输入设备:把人所熟悉的信息如,图片,声音,文字,转换为计算机能够识别的信息存储起来。(2)PCB:即使进程的控制块,也是进程存在的唯一标志。

2025-12-23 20:09:47 782

原创 Linux系统上C程序的编译与调试-以及makefile文件gbd调试

现在我们修改代码多加几个循环看看,学习一下调试有循环的代码所用到的命令。现在我们进入了test.c中,我想去add打断点该如何去呢?

2025-10-14 21:11:40 885

原创 库文件详解

共享库: 程序使用共享库,编译连接后,可执行程序只标记用到的库方法,并不包含。运行程序时,动态链接用到的库。

2025-10-14 21:11:32 330

原创 Linux基础命令详解-入门看这一篇就够了

外层是命令解释器,即 Shell,用于接收用户输入的命令并与内核交互。仅仅使用ps -ef需要我们一个一个用眼睛去找,现在我们加入过滤和通道代码 可以参数高亮,红色标记很清晰的给我反馈,如下图所示。现在看看上图中的bash,bash是命令解释器,它是伴随终端产生的,如下图,我开两个终端两个终端的bash的PID不一样。我们在一个终端下达睡眠命令,现在我们去另一个终端找这命令,使用如下这条命令:30。如果进程过多,我想一个一个关掉是十分麻烦的,所以我们使用pkill命令。首先,我们先将两个进程放到后台。

2025-10-13 14:13:00 256

原创 Linux最最入门的命令介绍以及必要软件安装-入门看这一篇就够了

我们看看如何使用vim软件:创建main.c文件 ,并用vim打开vim分为命令模式、插入模式、末行模式如何从命令模式进入到插入模式中呢,在键盘上敲字母i即可,而退出插入模式按一下esc即可下面进入到末行模式中 保存我们的代码这一切完成后,用如下命令进行编译,生成可执行程序main。

2025-10-13 14:12:54 716

原创 栈和队列的相关经典题目

【代码】栈和队列的相关经典题目。

2025-10-07 17:11:02 264

原创 nextval数组的优化讲解

当i和j分别走到第四个字符时,字符不同失配,则让j按照next数组对应的值回退,只不过回退的位置字符和当前失配的字符一模一样,则这一次回退也100%失败,无意义。我们现在需要在next数组的基础上提炼出nextval,把以上的情况都跳过去。如果回退的位置字符和当前失配的字符一模一样,这样的回退是没有意义的。现在给兄弟们实现Get_Nextval函数。

2025-10-07 15:45:04 171

原创 KMP算法详解

字符相同。

2025-10-05 19:54:34 196

原创 BF算法-KMP算法-相对简单的讲解,尽全力给兄弟们奉上最详细的解析

再主串里面找子串,例如:我们要在主串中找到字串主串"ABABCABCDABCDE''子串"ABCD''一般这样我们使用两种算法BF算法-KMP算法.下面我们对这两种算法进行详细分析。

2025-10-05 13:47:44 845

原创 数据结构阶段练习-链表相关习题(面试必会,最最基础练习题)

换句话说 只要他们相交,他们就有相同的尾结点。第一问:申请两个指针p和q,分别走到两个单链表的各自尾结点处,然后判断是否是同一个尾结点?思路:①判空两个单链表是否存在②让两个辅助结点就位看③看看两个尾节点是不是一样//只要求告诉我是否相交//判断两个单链表是否存在= NULL);= NULL);//验证了两个单链表的存在现在就需要 让两个辅助指针进行就位for (;p->next!= NULL;for (;q->next!= NULL;

2025-10-04 13:42:00 1037

原创 循环队列-一看就会(给兄弟们附上全套代码及注释,更有详细的图解,认真看包会的)

现在我们要使用顺序表实现队列的效果-先进先出现在有两选择:①头部进,尾部出②尾部进,头部出下面我们分析一下这两种情况的时间复杂度第一种情况(头部进,尾部出):头部进,插入6,要将1 2 3 4 5一起向后移动时间复杂度就变为了O(n),尾部出,直接length--即可,其时间复杂度为O(1)。第二种情况(尾部进,头部出):尾部进,时间复杂度为O(1),也就是直接找到我们合适的待插入位置即可。不用移动其他的元素其时间就位O(1)。头部出,把1进行覆盖。

2025-10-02 09:14:55 241

原创 单循环链表(全网最详细图解版)-小白一看就会,看完上手就能写

设计思路:我们申请的指针p要从第一个有效结点出发,然后判断依据是:只要我遇到的不是哨兵结点plist,我就进来看一下p->data是否等于val。咱们可以发现只要是删除操作基本都要两个帮手结点,q指针指向待删除结点,p指针指向在待删除结点的上一个结点,而且p和q一旦就位,跨越加释放。单循环链表相较于单链表,唯一的区别在于尾部直接可以回到头(也就是说,让尾节点的next域不再存储NULL,二是存储哨兵结点的地址)设计思路:如果辅助结点的next只有自己的地址 那是不是就可以说明一个有效结点都没有。

2025-09-25 15:57:12 179

原创 链式队列-全网最详细 ,一看就会。最详细的代码注释,为兄弟们逐行解析

下面我们和之前我们学习过的单链表和栈进行对比队列的插入操作叫做入队队列的删除操作叫做出队队列的插入的一端一般叫做队尾队列的删除的一端一般叫做队头如果现在只有单链表的这种表现形式,来实现一端进,一端出还要时间复杂度低。1.头插入尾删除 2.头删除尾插入为了使我们的时间复杂度都达到O(1),我们要对单链表进行改造如下图所示,为单链表引入帮手,这个帮手存储尾结点的地址。让我们很快的找到尾结点,时间复杂度为O(1)。

2025-09-25 15:55:25 343

原创 链栈-比顺序栈更简单

栈:在线性表的一端进行插入和删除操作(进行删除和插入操作的部分一般叫做栈顶)这时我们需要选择,是在单链表的头部进行插入和删除还是在单链表的尾部进行插入和删除?在单链表的头部操作效率更高所以用带辅助节点的单链表的头插和头删操作来模拟实现链栈的入栈和出栈操作。

2025-09-24 11:16:29 369

原创 顺序栈(初学必看)非常简单一看就会,最详细的图解顺序栈,附有完整代码与注释

栈:是一种特殊的线性表,插入的删除受到限制的线性表,只能在一端进行插入和删除的线性表。(插入的一端称为栈顶另一端称为栈底)栈的特点:先进后出(First In Last 0ut)FILO现在我们栈的实现可以在顺序表的基础上进行实现。(插入的一端称为栈顶另一端称为栈底)那么我们现在就要考虑:咱们默认在头部插入和删除还是默认在尾部进行插入和删除这里我们选择在尾部插入删除,这样时间复杂度小 效率很高。所以我们要知道尾巴在哪里(栈顶)在哪?

2025-09-22 16:58:21 416

原创 双向链表-配有详细图解一看就会,全套代码奉上

双向链表相较于多了一个指针域,这个指针域存放前一个结点的地址。直接将辅助结点进行赋值操作,将两个指针域都设为空。2.2头插函数(要分两种情况)情况一:普遍情况,我们要修改四个指针域,如图的绿色圆圈部分。既然知道我们要修改4个指针域 我们先修改谁呢?如果很难记住直接记住结论:修改顺序为②③④①情况二:是个空链表 没有有效结点 只有一个辅助结点。2.3尾插函数(不存在特殊情况)2.4按位置插入2.5头删函数(也要分两种情况)2.6尾删除百分之百确定不存在下家

2025-09-21 21:06:22 409

原创 小白入门数据结构必看:单链表“全站最细-通俗易懂”附有详细图解-完整代码解析

/有效节点结构体设计//数据域,存放自身的有效信息//指针域,存放下一个有效节点的地址。

2025-09-18 09:50:36 270

原创 不定长顺序表“最通俗易懂版”附有详细图解

由n(n>=0)个具有相同类型的数据元素组成的有限集合,元素之间存在一对一的线性逻辑关系(除了首尾元素之外,剩下每一个节点都有一个前驱和后继,可以想象一下糖葫芦)

2025-09-14 14:55:52 891

原创 计算机网络基础知识

数据链接层===》数据帧+ip包头+tcp报文+数据1 数据帧+ip包头+tcp报文+数据2 数据帧+ip包头+tcp报文+数据3 ........(数据帧中包含接收方的MAC地址)网络层---》ip包头+tcp报文+数据1 ip包头+tcp报文+数据2 ip包头+tcp报文+数据3.........数据链接层===》先校验数据帧中MAC地址是不是自己 是 就收 不是 就丢弃 数据帧+ip包头+tcp报文+数据。

2023-08-09 09:49:25 210 1

原创 结构体设计以及大小计算

结构体的基本语法 如何定义结构体变量

2022-08-09 17:03:25 649

原创 动态内存管理

memset(void*初始化内存的指针,int value传入的值,size_t size初始化多少个字节)IP的指向未发生改变,就是在之前内存不足的地方续上一块内存。会出现崩溃, a存在栈上 但是free释放的是堆上的内存。realloc的适用范围应与被扩容对象的内存空间相同。size_t _Size初始化几个(字节数)所使用的参数一个是个数count一个是字节数。void* _Dst初始化内存是谁。malloc与memset的使用。连续多次的释放内存会使程序崩溃。作用:在堆内存中扩容。...

2022-08-06 11:42:41 207

原创 递归函数以及动态内存分配问题

递归函数以及动态内存分配问题

2022-08-04 17:43:23 620

原创 指针习题详解

指针练习题

2022-08-04 14:27:54 148

原创 指针三( 指针练习题 指针数组 数组指针)

指针数组 数组指针

2022-07-30 15:14:39 202

原创 指针基础详解 二(const与指针)

const与指针

2022-07-28 17:49:21 175

原创 指针基础详解 一

指针详解1

2022-07-27 21:06:51 222

原创 C语言练习题--二维数组 杨辉三角

杨辉三角

2022-07-26 16:41:09 476

原创 二维数组详解

二维数组的详解

2022-07-26 15:40:07 1658

原创 一维数组题目练习

一维数组练习

2022-07-25 16:48:49 671

原创 数组查找相关题目

题目一:二分查找 题目二:字符串替换函数"i am a student"1个’ 空格 ’替换成2个#字符数组大小字符串大小

2022-07-24 09:04:08 296

原创 时间复杂度详解

详细介绍时间复杂度与空间复杂度

2022-07-23 15:52:28 8815

原创 数据结构(c语言版)严蔚敏 第二章线性表归并函数

直接上代码(小伙伴们根据我的函数写一个头文件就可以了)#include <stdio.h>#include <assert.h>#include <stdlib.h>#include "归并排序.h"//初始化void Init_list(PList p){ assert(p != NULL); p->data = (ELEMTYPE*)malloc(MAX_SIZE * sizeof(ELEMTYPE)); assert(p->da

2022-04-01 14:05:46 257

原创 数据结构(扩容顺序表)

1.1 顺序表的定义线性表的顺序存储结构,指的是用一段地址连续的储存单元依次存储线性表的数据元素所以我们需要一个数组来存放数据,一个整形来记录线性表当前长度,还有一个来记录当前线性表最大的存储量。1.2 扩容顺序表的初始化可扩容的顺序表相比与定长顺序表要多一个整型值来保存最大容量个数。根据上图分析代码如下:typedef struct Dsqlist{ int length; int list_size; ELEM_TYPE* data;//接受从堆内申请来的空..

2022-03-25 15:58:42 2163

原创 C语言基础知识详解(关键字 sizeof、 typedef、static、const)

sizeof计算类型的大小或变量的大小,也就字节个数。返回值是一个 无符号整型(unsigned int)

2022-02-13 15:22:38 516

原创 C语言基础知识详解(宏常量、const修饰、字符串)

1、用#define 定义的宏常量:可以使用#define定义一个标识符来表示一个常量。其特点是:定义的标识符不占内存,只是临时的符号,在预编译结束后就不存在了2、用const修饰字修饰的变量,称为常变量。//c语言中的const // c++中的const①c语言中的constX为变量,又被const修饰不能改变,所以称为常变量。len在.c文件中依旧为变量②C++中的const...

2022-01-21 20:21:38 1807

原创 const与指针的关系

int main(){ int a = 10, b = 20; //变量名的解释方向都是从右向左,const在这里修饰的是指向的概念 const int* p1 = &a;//指向不能改变,p1的指向的地址不能改变,p1自身的值可以改变 int const* p2 = &a;//p2是const指针所知指之物不能改变,是整形指针 //当const在“*”左边时,const修饰的是指向能力。当const修饰指向能力时指向只可取值不可写值,而p1自身是可以发生改变 *p1 =.

2021-11-12 09:46:12 579

原创 2021-10-20数组课上总结

一、数组概述每个独立的数据被称为数组元素。元素类型可以是任意类型(注意:定义为什么类型则数组中的元素就为什么类型)数组的两个最主要的属性:1、类型 2、元素大小(看得见的)3、数组在内存中是连续存放的(看不见的)一维数组的定义...

2021-10-20 16:26:48 113

免机型验证 小米妙享 For Windows(V3.0.2.68).exe

免机型验证 小米妙享 For Windows(V3.0.2.68).exe

2022-10-31

空空如也

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

TA关注的人

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