自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 进程间通信

2.2 管道两种类型。一、进程间通信的目的与分类。

2023-07-09 22:56:41 226

原创 基础IO及文件系统

对Linux进程来讲,每个打开的文件都是通过文件描述符(File Descriptor)来标识的,内核为每个进程维护了一个文件描述符表,这个表以FD为索引,再进一步指向文件的详细信息。所以对于多盘面的结构,它的定位方式为:先确定磁道(柱面),再确定磁头(磁头与磁道都有编号的),最后确定扇区。磁道与磁道之间的区域,一个扇区512字节,沿径向向外扇区面积变大,但数据总量不变,所以越靠近中心的位置,扇区面积越小,数据密度越大。6.多态的理解,通过OS系统中file结构中的函数指针来调动驱动中的对应的读写方法。

2023-07-09 19:27:42 277

原创 OJ题:翻转字符串III-翻转字符串中的单词

题意:给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。输入:s = "Let's take LeetCode contest"输出:"s'teL ekat edoCteeL tsetnoc"输入: s = "God Ding"输出:"doG gniD"

2023-03-08 22:06:12 113

原创 OJ题:字符串相乘

题意:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

2023-03-08 22:05:46 84

原创 OJ题:把字符串转换成整数

题意:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。数值为0或者字符串不是一个合法的数值则返回0。①字符串中可能出现任意符号,出现除 +/- 以外符号时直接输出 0。②字符串中可能出现 +/- 且仅可能出现在字符串首位。

2023-03-07 18:09:39 64

原创 进程控制及其操作

1.2 fork()函数的返回值。1.1 fork()函数。3.1 mian函数。

2023-03-04 08:49:08 414

原创 进程及其相关操作

1.进程及其他相关概念

2023-02-20 23:03:56 138

原创 Error:‘for’ loop initial declarations are only allowed in C99 mode 的解决方案

2.在可写 makefile 编译指令时,将。这是因为C89不允许循环变量在for里面定义。解决方法:1.在外面定义int i=0;

2023-02-20 11:42:53 1269

原创 vim编辑器和gcc/g++编译器和gdb调试器和make/makefile自动化构建工具的使用

注:在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工 作,在检查无误后,gcc 把代码翻译成汇编语言。读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了。用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。实例: gcc –S hello.i –o hello.s。实例: gcc –c hello.s –o hello.o。

2023-02-13 18:06:14 765

原创 OJ题:翻转字符串II

题意:给你一个字符串,再给定一个k,每数到2k的位置将前k个数翻转,对于剩下的字符串长度若小于k,则全部翻转;若大于k小于2k,翻转前k个。例如:abcd efgh ijkl mon,给定k为2;翻转样例如下:bacd fegh jikl omn。思路:对该字符串进行遍历,遍历的步距为2k。

2023-02-12 17:51:06 95

原创 OJ题:找出字符串中第一个唯一的字符

方法1:借用string中find和rfind函数,其中find返回的是从左到右寻找指定字符第一次出现的下标,其次rfind返回的是从右到左寻找指定字符第一次出现的下标。如果这两个下标相等,说明该字符在字符串中有且仅有一个。方法2:将字符串的每个字符当成数组下标放在一个新建数组里面,数组下标就是的是字符的ASCII码值。再对数组元素进行遍历,只要有==1的,就返回该下标。比如:lettercode --> l ppensnhheo --> s。题意:返回字符串中第一个不重复(只出现一次)的字符。

2023-02-10 23:01:34 165

原创 OJ题:验证字符串是否为回文串

设置两个标志:一个从头向尾走,一个从尾向头走。最先将字符串的大写字母变成小写字母,其次进行两个标志是否为字母的判断,如果两个都是字母,则进行两个字母是否相同的判断。两个字母都相同两个标志向下走,否则返回false。如果有任何一个标识不是字母,则不是标志的字母向下走。题意:判断字符串是否为回文串。回文串:如果一个字符串从左读和从右读,都是一样的话,该字符串就是回文串。要求1:忽略字符串中不是字母的字符。要求2:将大写字符全部转换为小写字母。

2023-02-10 14:14:43 177

原创 C/C++内存管理

答:new对自定义类型会进行初始化操作,并且通过调试发现:实际上new一个自定义类型会执行以下三部操作:(1).new表达式会调用operator new/operator new[]的标准库函数,该函数会。(2)、调试看看:对于自定义类型如果new与delete不匹配会发生什么?(2)、调试看看:对于内置类型如果new与delete不匹配会发生什么?注:(1)、调试看看:对于自定义类型new操作会不会对对象进行初始化操作?注:(1)、调试看看:对于内置类型new操作会不会对变量进行初始化操作?

2023-02-01 18:02:48 91

原创 OJ题:日期累加

输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。设计一个程序能计算一个日期加上若干天后是什么日期。输出m行,每行按yyyy-mm-dd的个数输出。

2023-01-27 15:15:05 91

原创 OJ题:打印日期

题意:给出年分m和一年中的第n天,算出第n天是几月几号。

2023-01-26 22:05:33 103

原创 OJ题:计算两个日期间的差值

思路二:构造一个日期类,核心思想在重载d1-d2,并且复用operator++,小的日期数据自增来等于大的数据,自增次数就是差值。思路一:将两个日期分别与其对应年的第一天相减,用得到的数据大的减去小的,最后就是相差的数值。题意:有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。输入:20110412 20110422 输出:11。这里先给出思路二的解法:代码如下。

2023-01-26 14:15:23 129

原创 OJ题:计算日期到天数的转换

算法思想:计算出每个月的天数,将该月之前的所有月的天数全部加上之后再加上当月的天数,即为在本年的第几天。这里数组的设计有两种方式:一种是叠加形,数组元素的天数是随月份叠加的;一种是单独形,数组元素的天数是单独每个月的。只要不是闰年,当前天数等于数组上一个元素+当前月的天数;如果是闰年并且当前月份大于2月,则在此基础之上加1。输入:2012 12 31 输出:366;输入:1982 3 4 输出:63。题意为:输入某年某月某天,计算这个日子在这一年是第几天。

2023-01-25 11:01:44 158

原创 逆波兰表达式-后缀表达式

3.后缀表达式的运算法则:遇到操作符就开始运算,取最近两个操作符运算。1.中缀表达式:形如4+3*2、2*5-(3+4)/8。2.后缀表达式:操作数在左边,操作符在右边。

2023-01-17 22:47:22 67

原创 list与vector的区别与优缺点

vector:涉及到复制(assgin)、插入(insert)、尾插(push_back)、resize(改变容器大小)、resever(扩容)、erase(删除,特别是尾删)等以上操作,都有可能会导致vector扩容,也就是说vector底层原来旧空间被释放掉,而在打印时,it还使用的是释放之间的旧空间,在对it迭代器操作时,实际操作的是一块已经被释放的空间,而引起代码运行时崩溃。string虽然也有失效,但是只有小部分不常用的接口使用的迭代器,其余大多数常用接口设计的是下标(size_t pos)。

2023-01-15 12:26:15 1826

原创 深拷贝与浅拷贝

在进行c++类和对象的学习时,以stack类(它里面有:数组的地址_a、数组有效元素个数_top、数组空间大小_capacity)为例,我们发现在进行对象的拷贝构造和复制操作时,如果我们不显示写出开辟空间的拷贝构造函数,编译器则会生成默认拷贝构造函数,默认拷贝构造函数是按值(将_a原封不动拷贝到另外一个对象)拷贝,这时两个对象指向同一块空间。当程序退出,两个对象要销毁(先定义的后销毁,后定义的先销毁),销毁时调用析构函数,这时先销毁的空间先释放,这样同一块空间被释放(还给操作系统)了2次,是不行的。

2023-01-14 23:19:22 63

原创 范围for的理解

范围for在遍历的时候,把数组(或者其他)的每一个元素的值拷贝给e,拷贝就要开辟空间,一定程度上降低了效率,所以加引用后可以节省空间,提高效率;而且若想要修改数组的内容,不加引用就无法修改,因为拷贝的值只是数组的一个副本,而加了引用之后,就是变量的别名,也就是变量本身,就可以进行修改操作。范围for在循环处理数组时,可以自动知道数组中的元素个数,所以不需要使用变量控制条件控制其迭代次数,也不必担心数组下标越界问题,同时可以自动把数组中的每一个元素迭代一次,所以不需要再通过下标的自增去访问数组中的元素。

2023-01-09 19:59:47 89

原创 Day006--标准模板库(standard template libaray)

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且 是一个包罗数据结构与算法的软件框架。STL由空间配置器+容器+配接器+迭代器+算法+仿函数六大组件构成。容器:就是数据结构,换了个名字。map+set的底层就是树。

2023-01-09 19:36:51 86

原创 Day005--模板初阶

通过以上代码可以提出这样的问题:swap(a, b)与swap(c, d)是否都调用的同一个函数(不是同一个函数,因为中间变量tmp的类型不同,栈帧不一样大;注意:当函数实参有两种或以上的类型时(int 和 double),是编译不过的,因为模板参数列表中只有一个T, 编译器无法确定此处到底该将T确定为int 或者 double类型而报错(就是以下代码)。1.1 问题的抛出:模板之前只要类型变化,我们就需要单独写个函数,如何编写与类型无关的函数,以解决不同类型的需求(不考虑函数重载)。

2022-11-18 20:18:46 54

原创 Day004--内存管理

【说明】:1. 栈又叫堆栈--非静态局部变量/函数参数/返回值等等,栈是向下增长的。局部变量之所以保存在栈区,是因为函数栈帧,寄存器esp、ebp指针。(进程-->进入main函数-->创建栈帧-->创建局部变量)2. 内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。3. 堆用于程序运行时动态内存分配,堆是可以上增长的。4. 数据段--存储全局数据和静态数据。5. 代码段--可执行的代码/只读常量。

2022-11-03 20:30:06 70

原创 Day003--类与对象(下)

为解决对象成员初始化的问题,提出类成员变量的初始化统一使用初始化列表,即使我们不显示写出列表。对于类成员类型如果是内置类型,如果给出了缺省参数就用缺省参数,没有给出就用随机值;对于如果是自定义类型,就调用他的默认构造函数,如果没有默认构造就报错。尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量, 一定会先使用初始化列表初始化。自定义类型成员(且该类没有默认构造函数时)1.1.2初始化列表使用在哪些场景?1.1.1为什么存在初始化列表?

2022-10-27 21:42:14 66

原创 Day002-Linux-权限管理

理论上目录权限为rwx,普通文件权限为rw-,所以对应的八进制分别为777,666。对文件而言,具有修改文件内容的权限;对目录来说,具有删除移动目录内文件的权限。对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。c:字符设备文件(例如屏幕等串口设备)文件/文件目录的所属组的用户--grouper(g)对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。文件/文件目录的拥有者--user(u)iii.执行(x/1。用法:chmod u/g/o+/-rwx 文件名。

2022-10-18 20:25:44 88

原创 Day002--类与对象(中)(6个默认成员函数)

C++给出类里面的类型如果是内置类型(char、int、char*、short)则不处理(所以需要我们写构造函数进行初始化),自定义类型(struct、class)会调用他的默认构造的原则。C++给出类里面的类型如果是内置类型(char、int、char*、short)则不处理(所以需要我们写构造函数进行初始化),自定义类型(struct、class)会调用他的默认构造的原则。自动生成的构造函数却不会初始化,是随机值。7. 无参的构造函数和全缺省的构造函数都称为默认构造函数,并且默认构造函数只能有一个。

2022-09-23 22:41:51 135

原创 Day002---类与对象(上)

C++对C在结构体上进行进一步的扩展,C语言的结构体成员变量不能是函数,所以C++的结构体不仅能定义变量也能定义函数,上述C++中的结构体的定义,用class代替。类类型的定义与结构体类似,class是关键字、className是类类型的名字。

2022-09-22 10:05:48 168

原创 Day001--Linux--指令

ls-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。ls-d 将目录象文件一样显示,而不是显示其下的文件。,该命令列出该目录下的所有子目录与文件。ls-i 输出文件的 i 节点的索引信息。如 ls –ai 指定文件。ls-k 以 k 字节的形式表示文件的大小。把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。ls-a 列出目录下的所有文件,包括以 . 开头的隐含文件。

2022-09-19 21:43:47 183

原创 栈和队列的OJ题

一、用栈实现队列:1.结构定义2.创建初始化:3.判空:4.入队:5.出队:6.获取队头数据:7.释放队列:8.倒数据:二、用队列实现栈:1.结构定义:2.创建初始化:3.判空:4.入队:5.出队:6.获取队头数据:7.释放队列:8.倒数据:三、循环队列:1.

2022-09-17 19:42:28 41

原创 二叉树基本概念及其基本操作

2.11 判断二叉树是否是完全二叉树。2.6 二叉树查找值为x的节点。2.5 二叉树第k层节点个数。2.4 二叉树叶子节点个数。2.7 二叉树前序遍历。2.3 二叉树节点个数。2.8 二叉树中序遍历。2.9 二叉树后序遍历。

2022-09-17 19:41:24 43

原创 Day001---C++入门

命名空间不影响变量的生命周期只是限定域,所以在命名空间内变量是全局域,在静态区开辟空间。为避免全局域中的函数、变量、类的名字的冲突,对标识符的名称进行本地化。访问命名空间里面的变量:命名空间名:: (平原如全局,命名空间砌筑了围墙,防止都能看见,起冲突)同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中,比如:.h文件与.c文件。1.2.1 正常定义命名空间成员可以是变量、函数、类型(结构体等)std为C++官方库内容定义的命名空间名字,如下面的bit。1.2 命名空间的定义。

2022-09-17 19:40:20 272

原创 常见排序算法(附带动图帮助理解)

1.1 基于挖坑法的单趟排序思想:形成以key为中心,左边序列都比key小,右边序列都比key大1.1.1 设置最左边为坑位,并保存该位置的值到key中1.1.2 右指针走(每次都应要求L

2022-09-12 12:34:40 314

原创 带头双向循环链表

1、结点结构为:数据域+指向前一个结点的指针+指向后一个结点的指针三部分组成。在效率上优于单链表,在结构上复杂于单链表。3、循环特性:首尾相连。注意在进行链表遍历时,应该正确确定循环停止条件:cur!2、带头:事先创建一个哨兵位结点,该节点无实际数据,在执行打印操作时,不需要打印该结点。5、形参的设计,对于哨兵位结点,在进行增、删、改等操作时,不会引起哨兵位结点的修改。6、断言assert,首先哨兵位结点是一定不为空的,为空必定出错。4、双向:前后指针串联。...

2022-08-26 22:31:48 115

原创 数据在内存中的存储

一、数据类型变量类型由基本数据类型+构造数据类型+指针类型+空类型组成。所谓的数据类型其实是给出变量在内存空间的大小,比如char a=10;给出变量a为字符整型,在空间中占1个字节8位。但是10是整数,他的二进制为32位的,在存入a中时,会发生截断只保留8位,则实际a中存放0000 1010(正数,原反补一样),当执行printf("%d",a);时,%d是以有符号整型输出,故0000 1010 会发生整型提升,由于char在vs中是有符号char、10为整数,0000 0000 0000 0000

2022-06-07 20:49:31 77

原创 C语言实现的N子棋(棋盘大小不限于九宫格,n宫格)游戏

准备工作:首先需要一个二维数组来存储并显示棋盘信息(n宫格、棋盘行列大小数)、下棋信息。1、棋盘初始化:将二维数组全部初始化为空格(两层循环,判断数组元素种)。游戏逻辑:1、玩家落子。3、判断输赢。(1)电脑赢,结束游戏。(2)玩家赢,结束游戏。(3)平局,结束游戏。(4)继续游戏。2、电脑落子。3、判断输赢。(1)电脑赢,结束游戏。(2)玩家赢,结束游戏。(3)平局,结束游戏。(4)继续游戏。上述1、3、2、3步骤无限循环游戏,除非遇到(1.

2022-05-01 22:01:53 394

原创 顺序表和链表

1.1 线性表在逻辑上是连续的一块内存空间,在物理结构上不一定是连续的,在物理结果上一般是数组、链表。1.2 顺序表用数组存储数据元素,在数组上进行增删查改。顺序表分为静态顺序表(使用定长数组存储)动态顺序表(使用动态开辟的数组存储)静态顺序表(固定大小的):typedef int SLDataType;//将int类型转换为SLDataType,以后数据类型变了,直接把int换掉,后面就全部 //改了.#define N 10;s

2022-04-30 22:39:30 164

原创 C语言预处理

一、预定义符号:写日志文件://创建一个文件并打开,在里面使用预定义符号,把赋值过程相关信息写入文件中#include<stdi.h>int main(){ int i=0; int arr[10]={0}; FILE* pf=fopen("log.txt","w"); for(i=0;i<10;i++) { arr[i]=i; fprintf("%s %s %s %d %d",__FILE__,__DATE__,__TIME__

2022-03-09 19:35:47 123

原创 文件系统=

1. 为什么使用文件: 我们前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。我们在想既然是通讯录就应该把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。使用文件我们可以将数据直接存放在电脑的硬盘上,..

2022-02-18 20:16:10 185

原创 动态内存分配

1.malloc与free成对使用:malloc函数在内存空间申请空间,但不初始化,函数申明为void* malloc(size_t size) 一般需要强制类型转换。开辟的空间的首地址用指针变量存放,以便找到。空间的释放free(指针变量),释放空间后把空间里面的数据清空,但是指针变量里面还是存放的这块空间的首地址。后续若再次使用到该指针变量将会很危险,所以最好还是把该指针变量置空。#include<stdio.h>#include<strlib.h>#include..

2022-02-14 19:49:40 231

空空如也

空空如也

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

TA关注的人

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