自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux多线程(一)

1.Linux线程概念什么是线程在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制 序列” 一切进程至少都有一个执行线程线程在进程内部运行,本质是在进程地址空间内运行 在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线 程执行流...

2019-07-08 19:53:54 227 1

原创 Linux进程控制(创建、等待、终止)

一、Linux进程创建1.1 fork函数在Linux中fork函数是一个非常重要的函数,它从已存在

2019-05-23 21:04:38 227

原创 僵尸进程和孤儿进程

一、 僵尸进程什么是僵尸进程僵尸状态是一个比较特殊的状态,当进程退出并且父进程没有读取到子进程退出的返回码时就会产生僵尸进程。僵尸进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出码状态。所有,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入僵尸状态。代码实现一下:#include <stdio.h>#include <st...

2019-05-15 12:05:03 265

原创 彩色进度条

1.创建Makefile文件:vim Makefile文件内容:test:test.c gcc -o test test.c ...

2019-05-02 11:57:56 181

原创 Vim常用的一些操作命令

1. 关于Vim1.1 Vim(神之编辑器)史上最强大的文本编辑器之一。还有一个叫Emces(编辑器之神),背后依赖于一个编程语言(Lisp:函数式编程语言)1.2 Vim强大的两个原因1.支持非常丰富的快捷键(操作效率高,但学习成本高),快捷键风格已经演化成了一种思想2.支持非常强大的扩展能力(插件机制)背后依赖着一个编程语言(VimL)1.3 Vim的对手们Emaces...

2019-04-27 21:27:06 182

原创 Linux下基本指令及权限理解

1. ls指令语法:ls【选项】【目录文件】功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。常用选项:-a 列出目录下的所有文件,包括以.开头的隐含文件-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)-R 列出所有子目录下的文件。(递归)...

2019-04-25 13:46:17 171

原创 c++中的多态

多态的定义及实现抽象类c++11中的override和final多态的原理单继承和多继承关系中的虚函数表1. 多态的定义及实现1.1 多态的概念通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生不同的状态1.2 多态定义的构成条件0.前提是继承调用函数的对象必须是指针或者引用。被调用的函数必须是虚函数,且完成了虚函数的重写。1.3 ...

2019-04-24 17:30:12 174

原创 c++中的继承

继承的概念及定义基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数继承与友元及静态成员复杂的菱形继承及菱形虚拟继承继承与组合1. 继承的概念及定义1.1 概念继承机制是面向对象程序设计使代码复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认识过程。继承是类...

2019-04-24 16:24:58 269

原创 c++ 的IO流

文件流对象C++根据文件内容的数据格式分为二进制文件和文本文件文件的操作步骤:定义一个文件流对象 ifstream ifile(只输入用) ofstream ofile(只输出用) fstream iofile(既输入又输出用)使用文件流对象的成员函数打开一个磁盘文件,使得文件流对象和磁盘文件之间建立联系使用提取和插入运算符对文件进行读写操作,或使用成员函数进行读写关闭文件...

2019-04-24 11:25:30 247

原创 模板进阶

非类型模板参数模板的特化类模板特化应用之类型萃取模板分离编译模板总结、1. 非类型模板参数类型形参即:出现在模板参数列表中,跟在class或者typename之后的参数类型名称。非类型形参:是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。...

2019-04-24 11:12:05 170

原创 模板初阶

函数模板类模板1. 函数模板1.1 函数模板的概念函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。1.2 函数模板格式template<typename T1, typename T2,…,typename Tn>返回值类型 函数名(参数列表){}template<typename T>void ...

2019-04-23 21:16:00 123

原创 string

标准库中的string类string类的模拟实现1.标准库中的string类1.1 string类的介绍string是表示字符串的字符串类该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, alloc...

2019-04-23 20:40:24 208

原创 deque

deque的介绍deque的使用deque的应用1. deque的介绍deque,是双端队列不规则字母的首字母缩写。双端队列是动态大小的序列式容器,其可以向两端伸缩。特定的库可以以不同的方式实现duque,但通常是一种动态数组,不论在任何情况下,它都允许通过随机访问迭代器直接访问单个元素,可以根据需要动态的伸缩。因此,deque提供了一些与vector相似的功能,但deque在头...

2019-04-22 11:54:12 158

原创 list

list的介绍及使用list的深度剖析及模拟实现vector和list的对比1.list的介绍及使用1.1 list的介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:...

2019-04-18 13:28:27 208

原创 vector

vector的介绍及使用vector的深度剖析及模拟实现1.vector的介绍及使用1.1 vector的介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分...

2019-04-10 13:53:32 1316

原创 stack和queue

stack的介绍和使用queue的介绍和使用priority_queue的介绍和使用、容器适配器1.stack的介绍和使用1.1 stack的介绍stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,...

2019-04-09 21:31:12 527

原创 C/C++内存管理

C/C++内存分布C语言中动态内存管理方式C++中动态内存管理operator new与operator delete函数new与delete的实现原理定位new表达式(placement-new)malloc/free和new/delete的区别单例模式(饿汉模式和懒汉模式)内存泄露1.C/C++内存分布说明:栈又叫堆栈,非静态局部变量/函数参数/返回值等等,栈是...

2019-04-01 21:36:46 111

原创 二叉树总结

1.树概念及结构2.二叉树概念及结构3.二叉树顺序结构及实现4.二叉树链式结构及实现1、树的概念及结构1.1树的概念树是一种非线性的数据结构,它是由n(n&gt;=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多 个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点...

2019-03-18 15:38:16 978

原创 c++入门

1.c++关键字2. 命名空间3. c++输入&amp;输出4. 缺省函数5. 函数重载6. 引用7. 内联函数8. auto关键字(c++11)9. 基于范围的for循环(c++11)10.指针空值–nullptr(c++11)1. c++关键字2. 命名空间使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这...

2019-03-12 17:33:15 268

原创 c++类和对象(上)

类的定义类的访问限定符及封装类的作用域类的实例化类对象模型this指针1.类的定义class为定义类的关键字,className为类的名字,{}中为类的主体,注意类定义结束时后面的分号。类的元素称为类的成员:类中的数据称为类的属性或者成员变量,类中的函数称为类的方法或者成员函数类的两种定义方式:1.声明和定义全部放在类体中,需要注意:成员函数如果在类中定义,编译器可能会将其...

2019-03-11 21:07:15 135

原创 C++类和对象(下)

1.再谈构造函数2.c++的成员初始化3.友元4.static成员5.内部类6.再次理解封装1.再谈构造函数1.1构造函数赋值类对象成初始化只能初始化一次,而构造函数体内可以多次赋值1.2初始化列表初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个成员变量后面跟一个放在括号中的初始值或表达式,例如:class Date{public ...

2019-03-11 20:03:27 126

原创 c++类和对象(中)

类的6个默认成员函数构造函数析构函数拷贝构构造函数赋值操作符重载默认拷贝构造与赋值运算重载的问题const成员函数取地址及const取地址操作符重载1.类的6个默认成员函数2.构造函数2.1概念构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有 一个合适的初始值,并且在对象的生命周期内只调用一次2.2特性函...

2019-03-09 17:01:58 352

原创 结构体类型创建 结构体初始化 结构体内存对齐 位段,位段计算机大小 枚举+联合

结构体类型创建结构体是一些(具有相同或者不同元素类型)值的集合,这些值成为成员变量。结构体的每个成员可以是不同类型的变量。结构体的声明:例如描述一个学生:struct Stu{ char name[20];//名字 int age;//年龄 char sx[5];//性别 char id[20];//学号};//分号不能丢结构体的成员可以是标量、数组、指针、甚至可以是其...

2018-11-27 16:12:38 143

原创 数组总结

数组的定义数组:在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。首先声明数组的类型,然后声明数组元素的个数格式: 元素类型 数组名[元素个数];比如: int a[3];数组元素有顺序之分,每个元素都有一个唯一的下标(索引),而且都是从0开始数组元素的访问: a[i]数组可以在定义数组的同时赋值:i...

2018-11-23 19:36:16 1386

原创 指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针、回调函数

指针数组与数组指针指针数组:指针数组就是存放指针的数组,其本质为数组。数组指针:数组指针是指向数组的指针,其本质为指针指向的对象是数组。由于“[ ]”的优先级高于“ * ”的优先级,指针数组与数组指针的表达可做如下表示:int * p1 [10];  // 指针数组  p1先与“[ ]”结合构成一个包含10个元素的数组,int表示的则是数组的内容。int ( p2)[10];  // ...

2018-11-22 18:07:00 179

原创 c语言小游戏--贪吃蛇

贪吃蛇设计流程:(1)数据设计辅助宏定义游戏地图的宽和高,以及蛇的最大长度食物结构体食物在地图上x和y上的显示蛇结构体蛇的长度,蛇得每一节的坐标存储,蛇的移动速度辅助全局变量蛇是否变化,蛇的初始移动方向(2)模块化设计地图设计void drawMap();//绘制游戏地图按键处理void keyDown();//按键处理...

2018-10-31 13:15:48 456

原创 经典面试题(1)

将一个字符数组的内容为:“student a am i”改为“i am a student”要求: 1. 不能使用库函数;2.只能开辟有限个空间(空间个数和字符串的长度无关)。算法思路:先将字符数组"student a am i"逆置变为"i ma a tneduts",然后在将字符数组"i ma a tneduts"里边的每一个单词逆置变为"i am a student".代码如下:...

2018-10-28 17:35:03 164

原创 c语言操作符总结

C语言运算符是说明特定操作的符号 ,它是构造C语言表达式的工具 。C语言的运算异常丰富,除了控制语句和输入输出以外的几乎所有的基本操作都为运算符处理。除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符,比如位运算符。操作符分类算术运算符移位运算符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号表达式操作符详解算数...

2018-10-25 21:11:35 149

原创 扫雷小游戏

要求: 1.第一步不炸死 2.坐标周围没有雷,可以实现展开test.c#define _CRT_SECURE_NO_WARNINGS 1#include “game.h”#include “game.h”void game(){int x = 0, y = 0, i = 0;char board[ROWS][COLS] = { ‘0’ };char show[ROWS][COLS...

2018-10-25 17:23:24 149

原创 三字棋小游戏

整个游戏可以分为以下几个环节1.打印一个游戏菜单2.玩游戏(1)玩家走一步(2)电脑走一步每走一步对结果进行显示,其中游戏的结果为玩家赢,电脑赢,以及平局代码显示如下:test.c#define _CRT_SECURE_NO_WARNINGS 1#include&quot;game.h&quot;void menu(){printf(&quot;*****************************...

2018-10-24 21:35:20 152

原创 c语言经典例题及解析

输出100到200之间的素数素数,就是除了1和他本身,不能被其他数整除的数字。 今天我们将用三种不同的方法来实现“输出100到200之间的素数”,请往下看:1、第一种方法就是用100到200之间的每个数字,除以2到其本身前面的那一个数字,如果此过程中出现整除的现象,则该数不是素数。如果没有整除的现象,则该数为素数输出。#include&amp;lt;stdio.h&amp;gt;int main(){...

2018-09-20 13:17:54 7580 1

原创 向程序猿迈进的第一天

自我介绍我是郝晓旗,来自延安,一个典型的陕北糙汉子。现就读于西安科技大学电子信息工程专业,是一个大三的老学长。从零开始最早开始接触编程是大一第一学期学习的c语言,刚开始接触的时候,这种全新的语言让我感到很惊讶,通过一些深入的了解才知道我们所用到的很多软件都是由它编写而成。但这种惊奇并没有持续太久,很快便被舒适的大学生活所淹没。直到现在,自己感受到了就业的压力,才决定从零开始认认真真的去...

2018-09-16 19:53:36 283

空空如也

空空如也

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

TA关注的人

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