自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux-进程控制详解(进程创建+进程终止+进程等待+进程程序替换)

Linux进程控制1. 进程创建1.1 fork1.2 vfork2. 进程终止3. 进程等待4. 进程程序替换1. 进程创建1.1 fork在Linux中,我们通常使用fork函数来为一个已经存在的进程创建一个新进程。而这个新创建出来的进程被称为原进程的子进程,原进程被称为该进程的父进程。该函数其实是一个系统调用接口,原型如下:#include <unistd.h>pid_t fork(void);特性:子进程会复制父进程的PCB,二者之间代码共享,数据独有,拥有各自的进程虚拟

2020-12-01 14:31:27 8702 16

原创 vector的模拟实现(思路清晰+注释详细=包你能看懂+学会)

vector的模拟实现1. 构造和析构(constructor and destructor)2. 迭代器相关(Iterators)3. 容量相关(Capacity)4. 元素访问相关(Element access)5. 元素修改相关(Modifiers)6. 完整代码1. 构造和析构(constructor and destructor)2. 迭代器相关(Iterators)3. 容量相关(Capacity)4. 元素访问相关(Element access)5. 元素修改相关(Modifiers

2020-11-29 17:39:30 1488 10

原创 你绝对不可以错过的常见排序算法大全(附详细源代码(C语言版))

常见排序算法的实现(C语言版)1.排序概念2.常见排序算法2.1插入排序2.11直接插入排序2.12折半插入排序2.13二路插入排序2.14希尔排序2.2选择排序2.21直接选择排序2.22堆排序2.3交换排序2.31冒泡排序2.32快速排序(三种版本)2.4归并排序2.5基数排序3.复杂度分析1.排序概念排序: 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性: 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保

2020-10-03 09:38:27 502 1

原创 C++支持函数重载,而C语言却不支持,原来是这个原因!

为什么C++支持函数重载而C语言却不支持?1.函数重载的概念2.函数名修饰----造成差异的真正原因2.1函数的编译过程+链接2.2Linux下的函数名修饰规则2.3Windows下VS中的函数名修饰3.extern "C"1.函数重载的概念如果你接触过C++,那么一定使用过插入运算符"<<“和提取运算符”>>"。这俩个运算符是C和C++位运算符中的左移运算符和右移运算符,而C++又把它作为输入输出运算符。允许一个运算符可以用于不同场合,不同的场合就有不同的含义,这就叫做运算符的

2020-09-24 11:15:24 2164 1

原创 详解C++动态内存管理

C++动态内存管理1. C/C++程序地址空间2. C语言动态内存管理回顾3. C++动态内存管理3.1 C++为什么要设计一套自己专属的动态内存管理方式3.2 new/delete操作符的使用3.2.1 new/delete操作内置类型3.2.1 new/delete操作自定义类型3.3 new/delete的实现原理3.3.1 operator new 和operator delete函数3.3.2 new/delete内置类型的原理3.3.3 new/delete自定义类型的原理4. malloc/

2020-11-23 12:06:53 431 7

原创 一文搞定Linux I/O系统基础知识(绝对干货!!!)

Linux基础IO1. C语言文件操作回顾1.1 fopen && fclose1.2 fwrite && fread1.3 others1.4 代码实例2. 系统文件I/O2.1 相关系统调用接口2.11 open && close2.12 write && read2.13 lseek2.14 代码实例2.2 文件描述符fd2.23 0 & 1 & 22.243. 三级目录1. C语言文件操作回顾1.1 fopen &a

2020-11-20 20:29:09 742

原创 简单理解C++模板

C++模板1.模板概念2.函数模板2.1函数模板概念2.2定义函数模板的一般形式2.3函数模板的原理2.4函数模板的实例化3.类模板3.1定义类模板的一般形式3.2类模板的实例化1.模板概念扯在前面:  现在过中秋一般都是从外边买月饼回来吃,但我在小的时候家里很多时候会自己动手来做过中秋节的月饼,我也在中秋节前见过家里的大人亲手做月饼的过程,不过写这篇博客自然不是想介绍做月饼的方式,毕竟很多的步骤我也没有太多的印象了,但其中有很重要的一步我却仍旧记忆犹新,那便是为了使月饼真正成形,都必须经过类似下面图

2020-11-07 11:13:34 237

原创 浅谈Linux进程概念

Linux进程概念1.冯诺依曼体系结构2.操作系统2.1什么是操作系统2.2操作系统如何进行软硬件的管理3.进程概念3.1什么是进程3.2进程控制块-PCB3.3查看进程3.4进程状态状态3.5僵尸进程3.6孤儿进程  在深入学习Linux进程概念之前,必须先对冯诺依曼体系结构以及操作系统这俩个概念做一个简单的了解和认识。1.冯诺依曼体系结构  冯诺依曼体系结构是绝大多数现代计算机的硬件体系结构,其认为现代计算机应该包含如下图所示的五大硬件体系结构。输入设备:作用是将原始的数据和处理这些数据的程

2020-11-06 13:31:49 345

原创 C++友元的理解

C++友元友元函数友元类  我们知道,一个类中可以有公用的(public)成员和私有的(private)成员,在一个家庭的住宅中,我们可以将客厅比喻为公用部分,因为通常客厅是允许任何来访客人进入的,而卧室则不希望外人进入,只允许家人进入,可以将卧室看作是私有部分。类外可以访问本类中的公用成员,但只有本类中的成员函数可以访问本类中的私有成员。 而这篇博客我要介绍的友元(friend) 则是一个例外。  friend的意思是朋友,或者说是好友,参考我上边举的例子,有的家庭可能会这样处理,卧室除了允许本家庭的

2020-10-24 17:30:40 431

原创 C++中的this指针原来是这么一回事

目录为什么存在this指针this指针的特性为什么存在this指针  对于C++来说,类和对象的相关内容可以说是整个C++语言的灵魂,也是其作为一门面向对象语言的精华所在。那么,一旦谈到类和对象,就少不了对this指针认识及使用了。在探究其特性之前,有必要先对其存在的理由做一个整体的了解,在C++中,this指针到底是什么意思?为什么会存在这样一个this指针呢? 通过下面一段代码来感受一下:#include <iostream>using namespace std;class S

2020-10-23 11:02:05 368

原创 浅析C++中引用与指针的区别

引用和指针的概念及区别1.引用及指针概念指针概念引用概念2.引用与指针的区别1.引用及指针概念如果熟悉指针和引用的使用,就会感觉到指针和引用在很多场景使用起来还是有很大的相似性的,尽管它们在概念上是俩个完全不同的东西。那么这二者之间到底具有怎样的相似性以及又有怎样的区别呢?在谈这个话题之前我们先简单回顾一下指针和引用的概念:指针概念在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(pointsto)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的

2020-09-24 20:45:18 636

原创 Linux-基础开发工具的使用(yum&vim&gcc&gdb&make/Makefile&git)

文章目录1.软件包管理工具yum1.1什么是软件包1.2查看/查找软件包1.3安装/卸载软件包2.编辑器vim2.1操作模式2.2模式切换2.3普通模式下的常用操作指令3.编译器gcc/g++3.1编译过程3.2gcc常用编译选项4.调试器gdb4.1调试前提4.2调试过程4.3常用调试指令5.项目自动化构建工具make/Makefile5.1Makefile的编写规则5.2Makefile的执行规则5.3伪对象的声明和使用5.4最简单的Makefile文本举例6.项目版本管理工具git在Linux中用gi

2020-09-13 22:37:33 420 2

原创 Linux-常用基础指令-绝对基础&常用!

目录1.目录相关指令2.文件相关指令3.打包相关指令3.1压缩/解压缩3.2打包/解包.其他指令1.目录相关指令ls --(默认)浏览当前目录下的文件信息常用选项-a --浏览目录下的所有文件,包括隐藏文件(linux下以.(点)开头的文件为隐藏文件,默认不显示)-l --查看目录下文件的详细信息实例:pwd --打印当前工作路径(绝对路径)实例:cd --改变当前工作路径,进入某个指定目录常用操作:cd .. //返回上级目录cd /home/test/workspace/

2020-08-06 21:59:51 257

原创 DS-栈和队列的原理及其实现

目录1.栈1.1栈的概念及结构1.2栈的实现2.队列2.1队列的概念及结构2.2队列的实现2.3循环队列及其实现1.栈1.1栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则(如下图)。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈,出数据也在栈顶。1.2栈的实现栈一般可以用数组或者链表来进行实现

2020-07-30 19:45:31 472

原创 DS-浅谈顺序表和链表的区别

如果学过数据结构,大家都知道不论是顺序表还是链表其实都属于是线性表的一种,而顺序表和链表都是非常常见的线性表,所以在谈顺序表和链表之前简单说一下线性表:线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理存储结构上存储时,通常以数组和链式结构的形式存储。1. 顺序表原理:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储,其结构类似上图中的数组结构。优点:(1)空间的利用率较高,存储空间连续。(2)支持通过下标随

2020-07-26 18:20:18 252

原创 DS-顺序表的基本操作(超级齐全)

数据结构-顺序表的基本操作(C语言实现)实现的具体功能如下:初始化顺序表显示顺序表尾部插入数据头部插入数据尾部删除数据头部删除数据顺序表扩容查找数据(遍历式)二分查找数据排序按值插入数据按位置插入数据按值删除数据按位置删除数据删除所有(与给定值相等的)数据清空顺序表获取头部元素获取尾部元素获取顺序表长度获取顺序表容量逆置顺序表摧毁顺序表这一大堆有被吓到吗?22个功能可还行?试问还有比我更全的吗?!!注:上述个别功能是不暴露给用户的,所以菜单中加上退出总

2020-07-25 18:45:24 698

原创 深入理解程序的编译过程+链接

文章目录一、程序的翻译环境和执行环境1.1编译环境1.2执行环境二、预处理详解2.1预定义符号2.2#define2.2.1#define 定义标识符2.2.2#define 定义宏2.2.3#define 替换规则2.2.4宏和函数对比2.2.5命名约定#2.3undef三、条件编译四、文件包含4.1头文件被包含的方式4.2嵌套文件包含一、程序的翻译环境和执行环境在ANSIC的任何一种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境,它用

2020-07-19 22:10:53 507

原创 C语言实现一个简单的通讯录(可写入文件)

用C语言来完成一个简单的通讯录管理系统,可以实现以下功能:1.存储任意多个联系人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址自定义一个初始容量联系人数量达到总容量(即通讯录满了)时进行自动扩容2.添加联系人信息3.删除指定联系人信息4.查找指定联系人信息5.修改指定联系人信息6.显示所有联系人信息7.清空所有联系人8.以名字排序所有联系人9.将通讯录中的联系人信息写入文件10.从文件中读取联系人信息至通讯录以多文件形式完成,源代码如下:main.c#include

2020-07-18 14:36:02 5300

原创 理解文件及其相关操作(C语言)

目录什么是文件文件名文件类型文件缓冲区文件指针文件的打开和关闭文件的顺序读写文件的随机读写文件结束的判定什么是文件磁盘上的文件就是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件。程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。数据文件文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。这里我们讨论的是数据文件。文件名一个文件

2020-07-15 16:06:16 290

原创 浅谈C语言动态内存管理

目录为什么存在动态内存分配动态内存函数的介绍mallocfreecallocrealloc常见的动态内存错误为什么存在动态内存分配动态内存函数的介绍mallocfreecallocrealloc常见的动态内存错误

2020-06-24 16:18:14 315

原创 C语言自定义类型详解

目录结构体结构体类型的声明结构的自引用结构体变量的定义和初始化结构体内存对齐结构体传参枚举枚举类型的定义枚举的优点枚举的使用联合(共用体)联合类型的定义联合的特点联合大小的计算结构体结构体类型的声明结构体的基础知识结构体是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。结构体的声明struct tag//结构体名{ member-list;/成员变量列表}variable-list;//结构体变量如描述一个学生:struct Stu{ char

2020-06-23 19:20:39 1132

原创 三种方法实现字符串左旋(C语言)

题目要求:实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB方法一最容易想到的一种方法,左旋一次其实是把字符串第一个字符先保存起来,然后字符串整体向左挪一步,最后再把最初保存起来的第一个字符放到字符串末尾,即完成了一次左旋 ,实现多次左旋则利用循环即可。//abcd1234//char temp = 'a';//Xbcd1234//bcd1234a具体代码实现:#include <stdio.h>#incl

2020-06-20 22:07:23 625 1

原创 mem系列库函数的模拟实现

目录memcpy的模拟实现memmove的模拟实现memcmp的模拟实现memcpy的模拟实现memcpy的实现原理与strncpy的原理非常相似,甚至可以直接借鉴其实现思想来完成对memcpy的模拟实现,我的上一篇博客中有strncpy的模拟实现,有兴趣的读者可以去翻看。只不过memcpy是与类型无关的拷贝,关注的是进行拷贝的字节数。具体代码实现如下:#include <stdio.h>#include <assert.h>#include <windows.h&

2020-06-19 16:49:21 208

原创 str系列库函数的模拟实现(一看就会系列)

str系列库函数的模拟实现写在前面上一篇博客对字符串操作函数的功能及基本用法进行了一个较为详细的总结,但为了进一步了解这些库函数的实现原理,我们也应该对其进行模拟实现,以加深我们的理解和印象。strlen的模拟实现由于strlen函数本身比较简单,这里我们采用三种方法分别来实现它:方法一:创建临时变量count计数器#include <stdio.h>#include <assert.h>#include <windows.h>int my_strle

2020-06-18 13:19:22 362

原创 字符串操作函数及相关内存操作函数详解

字符串+内存操作函数求字符串长度strlen长度不受限制的字符串函数strcpystrcatstrcmp长度受限制的字符串函数strncpystrncatstrncmp字符串查找strstrstrtok错误信息报告strerror内存操作函数memcpymemmovememcmpmemset求字符串长度strlensize_t strlen ( const char * str );strlen是求字符串长度的函数。字符串已经’\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’

2020-06-17 16:04:51 299

原创 浅谈数据在内存中的存储

数据在内存中的存储数据类型详细介绍类型的基本归类整形家族浮点数家族构造类型指针类型空类型整形在内存中的存储大小端字节序介绍及判断什么是大端小端为什么有大端小端浮点型在内存中的存储解析数据类型详细介绍我们都知道C语言基本的内置类型:char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数需要注意的是,C语言没有字符串类型!那

2020-06-16 17:58:45 1079

原创 确定不看看我的扫雷吗(C语言)

前几天写了一个三子棋游戏,如果有兴趣可以去翻看我的上一篇博客,而今天要分享的扫雷游戏原理与三子棋大同小异,但个人认为扫雷还是要比三子棋稍微高端一些的,废话不多说,思路奉上:1.首先需要俩张面板(即俩个二维数组)一张是用来展示给玩家的游戏面板另一张则是用来布雷的面板2.把面板展示成我们希望看到的样子,所以需要将我们的二维数组初始化成对应的内容把展示给玩家的面板初始化为全※把布雷的面...

2020-04-24 22:39:14 437

原创 三子棋游戏的实现(C语言)

本文内容为用C语言实现一个简单的三子棋小游戏:主要步骤有以下几点:打印菜单打印棋盘游戏过程玩家落子电脑落子判断结果玩家获胜电脑获胜平局提示玩家是否再来一局并且再次显示菜单本人以多文件形式完成:chess.h(放置所有预处理命令、头文件、宏定义以及函数声明)chess.c(函数具体实现)main.c(主要逻辑及函数调用)以下为具体代...

2020-04-21 14:51:59 364

原创 猜数字游戏的实现(C语言)

本文内容为利用循环与分支语句来实现一个简单的猜数字游戏:游戏规则为:系统随机生成一个[1,100]内的整数,玩家需要在六次之内猜出这个数字。每猜一次,如果猜对,则提示恭喜并公布数字,否则会提示玩家猜大了或者猜小了,剩余尝试次数随之减一,次数用完,游戏结束!(次数限制可以根据个人喜好随意修改,也可以直接去掉count计数器,即直到猜对为止。)具体代码实现如下:#include <std...

2020-04-12 19:09:18 1102

原创 阿部的第一篇博客

阿部来自西安科技大学,已经大二了,到现在才发布自己的第一篇博客, 我感觉有些遗憾。但是这并不能代表阿部对于编程有多少怠慢,作为软件工程的一名学生,阿部喜欢他的这个专业,通过一年多来的学习和了解,阿部发现他热爱编程,并且享十分享受敲代码的过程。至于目标,阿部认为,编程的目标并不在于未来想进多大的公司,赚多少的工资,而是从现阶段开始脚踏实地,不断学习,不断练习,不断积累,如果未来能有很...

2020-03-26 13:07:47 631 1

空空如也

空空如也

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

TA关注的人

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