自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux进程2

A进程创建了B进程,则A叫做B的父进程,B是A的子进程,而在进程创建过程中,OS内核一般会把父进程的地址空间拷贝一份给子进程,这样父子进程之间的任何操作都不会影响对方,即他们的资源是独立的。但为了节省资源,常常会用到,这样就可以使父子进程在读时共用一份相同的资源,而当其中一方要进行写时,才会拷贝要修改的那部分资源。而在代码上,进程是由一个结构体描述的,即(在Linux中是),这样把所有进程都放在一个数据结构中,就可以统一的进行管理。

2024-07-27 19:14:52 290

原创 位运算的一些操作

【代码】位运算的一些操作。

2024-05-26 16:08:44 369

原创 linux进程信号

向进程传递信号,进程会根据不同的信号,做出不同的反映。linux输入。

2024-05-18 22:28:14 943

原创 动态库和静态库

链接时将代码段直接加载进可执行文件中,运行时就不需要静态库文件,因为静态库中的代码已经在可执行文件中了。在linux中以作为静态库文件后缀,Windows中是。

2024-04-24 17:59:46 338

原创 cpp中模板(基础)

在c语言中,我们可能经常用到栈,队列,链表等一系列数据结构,还有swap函数等一系列函数。但非常遗憾,c库里都没有这些,因为这些数据结构和函数中的参数的类型往往是不确定的,我们必须手动编写这些代码。这无疑给我们带来了十分大的困扰,因此cpp中出现了这个概念,而的重要性毋庸置疑。

2024-02-23 11:22:19 189 1

原创 调试器gbd的指令

gbd指令quit/q 退出gbdlist/l + ([文件名:])+[行号/函数名] 展示(文件)某行/某函数的代码b+(文件名:)+[行号/函数名] 打断点info/i + b 查看断点信息d + [断点编号] 删除断点enable/disable +[断点编号] 打开/关闭某个断点next/n 逐过程运行step/s 逐语句运行print/p + [变量] 查看变量信息display + [变量] 常显示变量信息undisplay + [变量编号] 取消显

2024-02-22 22:59:50 525 1

原创 一些vim指令

!注:shift+a即表示A,如果键盘输入在大写模式,不用输入shift。

2024-02-22 16:25:55 273 1

原创 Linux中的makefile

在Linux命令行中,我们要编译文件生成可执行程序,删除可执行文件要写一段代码如果我们在测试一个文件时,每次都要这样写,那会显得十分的麻烦。因此熟练的使用显得十分有用。

2024-02-07 20:36:32 343 1

原创 内联函数inline

内敛函数的声明定义很简单,只需在函数前加个inline从此Add()就是一个内联函数.

2024-01-30 17:22:22 417 1

原创 cpp与namesapce

c++相比c有了很大的改善,其中c++的可谓至关重要。接下来我将要讲述namespace相关的语法和作用,其中也会设计cpp特有的和方法。

2024-01-23 16:41:02 408 1

原创 归并排序(递归and迭代)

值得注意的是,迭代实现归并排序时,不像快速排序那样用栈或者队列直接去替代,因为在归并排序的递归实现中,我们必须先递归到最深处,再反过来依次去排,而在快排的递归实现中,我们先排再递归,递归完后不需要排。因此我们在用迭代实现归并时,我们会直接从最深处开始排,再依次往外,不是像递归那样,从最外到最深,再往外。归并排序是一种经典的分治算法,它的基本思想是将待排序的序列分成若干个子序列,分别对子序列进行排序,然后将排好序的子序列合并成一个有序序列。

2024-01-17 16:02:30 376

原创 快速排序的递归和迭代

找到一个基元素,将它放置在合适的位置,使该元素一侧全为大于等于它的元素,另一侧全为小于它的元素;若要用循环实现,关键就在于要创建一个队列去存储数据(每一次处理时的begin和end)。再将该元素的左侧和右侧分别进行上述操作;再一直重复上述操作直至排序完成。这里写一种方法的代码。

2024-01-10 11:45:40 629

原创 顺序表和链表

初始数据结构,会遇到两个的表,它们是和。顺序表本质上就是一个数组,它在上都是连续的;链表在上非连续但在逻辑层次上是连续,常用结构体指针来实现。本章主要通过概念理解顺序表和链表,所含代码较少。

2023-11-28 21:59:48 817

原创 输入/输出

我们首先需要理解什么是输入,什么是输出。简单的来说,把数据传输到内存就是输入,键盘,硬盘,网络……都可以是输入的起点。我们平时用的scanf和getchar都是输入函数。输出就是把数据从内存传输出去的过程,其中输出的终点可以是显示屏,网络,硬盘……我们平时遇到的printf和putchar就是输出的函数。

2023-11-05 11:57:00 144 1

原创 C语言实现扫雷

上述代码已经清晰的告诉我们这个程序的进程是怎么样的,但是,我们可能还是会疑惑,这里的随机数是在干啥?我么在展示数组里赋予的值是 ‘*’ ,这个没什么太大意义,但在埋雷数组里我们赋予的值是‘0’,这里就十分有价值。d这个函数也很好理解,我们要让它显示没排查的区域(*)和排查的区域(显示数字字符),同时我们在它两侧标出了坐标。等常量,便于我们根据难度设置数组大小,也易于我们观察代码所含的意义。代码基本就是这样,我简略的说了下它们的作用,具体的实现还是要靠自己的理解。这个是扫雷的函数,我们在选择坐标后我们进入。

2023-10-12 22:52:09 143

原创 动态内存分配实现二维数组 和 qsort模拟实现(冒泡排序)

今天我们来讲两道十分基础的基础题。

2023-09-24 10:36:05 339 1

原创 自定义类型——结构体

一种或多种类型数据构成的集合。char b='a';char c[10];上述代码就定义了一个结构体,它的类型是struct S,注意!!!不是struct!!!也不是S!!!

2023-09-22 22:02:02 170 1

原创 C语言字符在内存中的存储

其中char可以是signed char类型,也可以是unsigned char,究竟是哪个要看编译器,这里以vs2022来讲。在vs中,char就是。是一个整数,但它们却是相等的,说明在计算机内部,它们两个的本质其实是一样的,也就是它们储存方式在本质上是一样的。,在这种表中,每个字符都有与其对应的数字,借此我们就可以通过数字来代替字符。这里已经有九个字节了,它就会发生截断,取最后八位,也就是00000000,十进制就是0。表示符号(正负),1就是负,0就是正数,其余七个位置来存放大小,因此其最大值就是。

2023-09-15 21:45:46 1118 1

原创 二级数组的深入理解

我们熟悉一维数组的初始化,即而二维数组的初始化和一维数组很像,区别就在一维数组只有一行,而二维数组可以有多行。上述就是我们的二维数组,其类型是。其中3就是行数,5是列数。一般情况下,元素会默认从第一行开始填入,空余的位置会补0。我们再来看一段二维数组的创建代码这样创建的二维数组就是这样的。

2023-08-20 19:35:57 344 3

原创 C语言——操作符

在介绍操作符前,先让我们了解下二进制相关知识。

2023-08-15 17:37:34 240 1

原创 函数递归解决兔子跳台阶和汉诺塔

如果第一次跳一级,那我们有rabbit_jump(n-1)个跳法,如果第一次跳两级,我们有rabbit_jump(n-2)个跳法。我们这将n个方块分成了两个部分,Ⅰ和Ⅱ,我们接下来要做的就是先将Ⅰ通过C移到B,再将Ⅱ移到C上,最后将Ⅰ通过A移到C。简而言之,汉诺塔问题就是让我们把A上的所有方块借助B,移到C上面去,且该过程中,大的方块上必须全是比它小的方块。一只兔子要跳上n级台阶,它可以一次跳一级台阶,也可以一次跳两级台阶。而当n大于2时,我们可以把问题拆分:让兔子先跳一次,再算剩下台阶的跳法。

2023-08-11 22:37:45 344 1

原创 c语言入门游戏——猜数字

printf("*****开始游戏——1*****\n");printf("*****退出游戏——0*****\n");//范围1-100 //猜数字 int guess;printf("请猜测 :");printf("还剩%d次机会\n" , num - 1);printf("还剩%d次机会\n" , num - 1);} else {!!\n");break;} num --;printf("正确答案是%d\n" , random);int in = 0;

2023-08-06 18:53:28 198

原创 简单的循环与分支语句

如果后面的式子为真,则会执行if后的代码块;如果后面的式子为假,则会执行后的代码块。这就是的基本逻辑。我们再看一段代码我们发现总结,如果判断表示式为真,则会返回1,为假,则会返回0。而我们知道在c语言里面,0就表示假,非0(包括1)表示真。通过这段代码,我们更清楚判断语句的基本原理。那这段代码会不会返回 haha 呢?答案是会。因为(x=30)的返回值是1,而 1<20 ,因此上述判断语句是真。我们再看二段代码这两段代码逻辑一样吗?答案是不一样。第一段代码的与离它最近的搭配,因为没有。

2023-08-06 12:06:57 184

原创 c语言的基础数据类型

但值得注意的是在“1324”中,其实4的后面有一个\0,这意味着函数如果读取到\0就会终止对字符串的读取,而如果没有\0,函数就会在其它内存地址中继续读取,直到读取到其它内存地址里的\0,这就可能出现乱码。代表着无符号(不能取负数),这也意味着int类型的范围会改变从[-32768,32767]到[0,65535],而当我们的变量只能取整数时,我们就可以加上。浮点型通俗的讲,就是我们所熟知的小数,其储存方式与整数不同,浮点数要把整数和小数分开储存,这里就不赘诉了。,其内存大小是1字节(8bit)。

2023-08-05 17:03:49 187 1

空空如也

空空如也

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

TA关注的人

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