自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 在C++中用STL实现简单计算器

using namespace std;int Priority(char ch) { switch(ch) { case ‘(‘: return 3; case ‘*’: case ‘/’: return 2; case ‘+’: case ‘-‘: return 1; default: return 0; }}int main...

2018-08-08 14:41:50 265

原创 关于tcp三次挥手

TCP:SYN ACK FIN RST PSH URG简析三次握手Three-way Handshake 一个虚拟连接的建立是通过三次握手来实现的 (B) –> [SYN] –> (A) 假如服务器A和客户机B通讯. 当A要和B通信时,B首先向A发一个SYN (Synchronize) 标记的包,告诉A请求建立连接. 注意: 一个 SYN包就是仅SYN标记设为1...

2018-08-06 16:38:42 262

原创 C++语法学习(7)

1.函数模板函数模板由模板说明和函数定义构成模板说明的类属参数至少在函数定义中出现一次函数参数表中可以使用类属类型参数,也可以使用普通类型2.函数模板不允许自动类型转化 普通函数能够进行自动类型转换3.当函数模板遇到普通函数1 函数模板可以像普通函数一样被重载 2 C++编译器优先考虑普通函数 3 如果函数模板可以产生一个更好的匹配,那么选择模板 4 可...

2018-08-02 09:54:21 170

原创 C++语法学习(6)

1.函数重写 在子类中定义与父类中原型相同的函数 函数重写只发生在父类与子类之间重载与重写区别: 重载:同一个作用域; 子类无法重载父类函数,父类同名函数将被覆盖; 重载是在编译期间根据参数类型和个数决定; 重写:发生于父类、子类之间; 父类和子类函数有相同的函数原型; 使用virtual关键字声明后能够产生多态; ...

2018-08-02 09:53:39 193

原创 C++基础语法学习(5)

1.继承应用的场景1) 当你创建的新类与现有的类相似,只是多出若干成员变量或成员函数时,可以使用继承,这样不但会减少代码量,而且新类会拥有基类的所有功能。2) 当你需要创建多个类,它们拥有很多相似的成员变量或成员函数时,也可以使用继承。可以将这些类的共同成员提取出来,定义为基类,然后从基类继承,既可以节省代码,也方便后续修改成员。2.三种继承方式1) public继承方式 基类中...

2018-08-02 09:53:03 552

原创 C++中虚继承

虚继承和虚函数是完全无相关的两个概念。 虚继承是解决C++多重继承问题的一种手段,从不同途径继承来的同一基类,会在子类中存在多份拷贝。这将存在两个问题:其一,浪费存储空间;第二,存在二义性问题,通常可以将派生类对象的地址赋值给基类对象,实现的具体方式是,将基类指针指向继承类(继承类有基类的拷贝)中的基类对象的地址,但是多重继承可能存在一个基类的多份拷贝,这就出现了二义性。虚继承可以解决多种...

2018-07-29 10:05:24 166

原创 c++继承方式

公用(public):访问权限最高;除派生类外,外部函数也可以直接访问(无论是成员变量还是成员函数)。 私有(private):访问权限最低;只能是该类内部函数互相调用,派生类、外部函数都不能访问。默认为私有继承. 保护(protect):访问权限中间;该类内部函数、派生类都能访问,外部类、外部函数不能访问/基类成员在派生类中的访问权限不能高于继承方式指定的权限/我们这样来记会更加...

2018-07-29 10:04:33 327

原创 C++基础语法学习(4)

如果能作为左值则返回引用,例如a+b不能作为左值,a=b可作为左值,a++不能作为左值,其返回一个值,是常量,++a可作为左指,返回a这个变量2.当无法修改左操作数的类时,使用全局变量进行重载,如<<和>>,因为无法修改ostream和istream,只能用友元函数进行重载,若用成员函数,成员变量会作为左值,而在cout中,成员变量只能作为右值,发生冲突3.=,...

2018-07-27 13:47:19 150

原创 C++基础语法学习(3)

1.对象初始化列表:当成员变量是一个对象,且该对象没有无参构造函数1.必须这样做: 如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,没有默认构造函数。这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数, 如果没有初始化列表,那么他将无法完成第一步,就会报错。2、类成员中若有const修饰,必须在对象初始化的时候,给const...

2018-07-25 10:06:34 143

原创 C++基础语法学习(2)

1.面向对象语言开发效率高,运行效率下降百分之十左右2.private 私有,类内部调用protected 受保护(用于继承)public 公有,内外都可以调用3.class中默认是私有权限struct 中默认是公有的4.constructor 构造函数①不用用户调用,系统自动调用②名字与类名相同③无返回值(c++中唯一无返回值的函数)5.destructi...

2018-07-25 10:05:54 160

原创 函数返回局部变量

一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意...

2018-07-25 10:04:52 504

原创 抽象。封装

在 C++ 中,我们使用访问标签来定义类的抽象接口。一个类可以包含零个或多个访问标签:使用公共标签定义的成员都可以访问该程序的所有部分。一个类型的数据抽象视图是由它的公共成员来定义的。 使用私有标签定义的成员无法访问到使用类的代码。私有部分对使用类型的代码隐藏了实现细节。 访问标签出现的频率没有限制。每个访问标签指定了紧随其后的成员定义的访问级别。指定的访问级别会一直有效,直到遇到下一...

2018-07-23 15:18:25 202

原创 类和对象

C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。 类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。类定义是以关键字 class 开头,后跟类的名称。类的主体是包含在一对花括号中。类定义后必须跟着一个分号或一个声明列表。class 是...

2018-07-23 15:17:14 181

原创 day01--C到C++的过度

命名空间using namespace std;//标准命名空间namespace A{ int a = 1; void print() { cout << "namespace A" << endl; }}namespace B{ int a = 2; void print() ...

2018-07-19 10:17:27 205

原创 操作系统基础

1、简述Linux进程内存空间分为哪几个段?作用分别是什么? 答:Linux中的进程包含3个段,分别为“数据段”、“代码段”和“堆栈段”。“数据段”:已被初始化的变量,包括全局变量和已被初始化的静态变量;未初始化数据段,存储未被初始化的静态变量,又称BBS;“代码段”存放的是程序代码的数据;“堆栈段”存放的是子程序的返回地址、子程序的参数以及程序的局部变量等

2017-12-07 14:29:05 140

原创 网络编程(二)

1. Socket有哪些分类流式Socket:用于TCP通信;数据报Socket:用于UDP通信;原始Socket:用于新的网络协议实现的测试等 2. 主机名和地址之间转化的函数有哪些?名字和数值地址间的转换:gethostbyname,gethostbyaddr;它们都可以实现IPv4和IPv6的地址和主机名之间的转化,其中gethostb

2017-12-07 14:25:17 168

原创 网络编程(一)

1.TCP/IP作用于OSI模型的哪几层?TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7曾抽象的参考模型,其中每一场执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。而TCP/IP通信协议采用了4层层级结构,没一场都呼叫它的下一层所提供的网络来完成自己的

2017-12-07 14:24:38 223

原创 多线程编程

1. 最小的能独立运行的基本单位是什么线程是进程的一个实体,是CPU调度和分配的基本单位,它是比进程更小的能独立运行的基本单位,一个进程可以包含多个线程 2. 线程与进程的区别是什么地址空间和其他资源:进程间相互独立,同一进程的各线程相互之间共享,某进程内的线程在其他进程不可见;通信:进程间通信IPC,线程间可以直接读写进程数据段来进行通信。调度和切

2017-12-01 15:02:36 163

原创 进程间通信(二)

1. 互斥锁与二值信号灯的区别在哪里信号灯强调共享资源,只要共享资源可用,其他进程同样可以修改信号灯的值,互斥锁更强调进程,占用资源的进程使用完资源后,必须由进程本身来解锁 2. 信号灯的竞争问题该怎么解决第一个创建信号灯的进程在初始化信号灯时,第二个进程又调用semget,并且发现信号灯已经存在,此时,第二个进程必须具有判断是否有进程正在对信号灯进行初始化的能力。

2017-12-01 15:01:48 175

原创 进程间通信(一)

1. 为什么进程会共享内存进程的用户空间是独立的,一般而言是不能互相访问的,唯一的例外是共享内存区 2. 进程间通信有什么不常用的方式普通PIPE,流PIPE,命名PIPE,消息队列,信号量,共享存储,UNIX流SOCKET,UNIX数据包SOCKET 3. 无名管道与有名管道的优缺点管道用于具有亲缘关系的进程间通信,用户自己创建管道,并完成

2017-12-01 15:01:02 184

原创 进程控制编程

1. 多进程与并发的关系当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能同时真正进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再把时间段分配给各个线程执行,在一个时间段的线程代码执行时,其他线程处于挂起状态。这种方式我们成为并发。 2. Kill,pkill,xkill的区别Kill是和ps,pgrep命令结合在一起使用的Pkil

2017-11-24 00:03:02 164

原创 文件操作

1. Linux下文件系统的特点1.Linux系统中一切皆文件Linux系统把设备都看作文件,文件夹也看作文件2. Linux文件类型普通文件,目录文件,链接文件,块设备,字符设备,Socket,管道文件3. Linux文件属性蓝色:目录 绿色:可执行 浅蓝色:链接红色:压缩 灰色:其他 2. Linux下Shell和C的关系

2017-11-24 00:02:17 146

原创

1、栈是限定在表尾进行插入或删除操作的线性表2、后进先出3、栈的存储方式有两种:顺序存储,链式存储4、由于栈的插入和删除操作具有它的特殊性,所以用顺序存储结构表示的栈并不存在插入删除数据元素时需要移动的问题,但栈容量难以扩充的弱点仍就没有摆脱。

2017-11-02 22:41:11 176

原创 线性表

1、随机存储是顺序访问,顺序存储是随机访问2、在顺序存储结构的线性表中,插入或删除一个元素,平均移动表中的一半元素。

2017-10-27 16:06:00 197 1

原创 预处理、结构体

1、宏定义的位置及作用域? 宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束,也可以用“#undef”命令终止。2、文件包含命令“”与<>的区别 使用<>表示在包含文件包含目录中去查找(包含目录是由用户在设置环境时设置的),而不在源文件目录去查找。 使用“”表示首先在当前的源文件目录中查找,若未找到才到包含目录中查找。3、什么是结构体 将一些相关联的数据打包成一个整体,方便使用,这

2017-10-26 16:19:12 265

原创 C语言(八)--变量的存储类型

为初始化的全局变量为0,局部变量为垃圾值register:寄存器变量(经常访问,循环)值存在cpu中register int x;不存在取地址auto:默认extern:声明外部变量(全局)外部:不在本文件在同一个工程变量为全局变量static:修饰函数只能在本文件中调用,不能在其他函数调用(静态函数)修饰局部变量,只能被定义

2017-10-20 01:44:39 256 1

原创 C语言(七)--函数

puts:输出字符串到终端 puts(字符数组) 遇\0结束gets:输入字符串到字符数组,得到一个函数值(该字符数组的起始地址) get(字符数组)strcat:连接两个字符串 strcat(字符数组1(或者字符串),字符数组2(或者字符串) 字符串2接到字符串1后面,返回字符数组1的地址,字符数组1要足够大strcpy:复制字符串 strcpy(字符数组1,字符数组2(字符串2))

2017-10-20 01:42:43 363

原创 C语言(六)--数组

数组,在内存中连续存储数组的地址数组的地址 a和&a(复合数类型)求数组长度 sizeof(a)/sizeof(a[0])a[0] 若赋值,指的是赋值地址&a[0] 指的是a[0]这个单元的地址一维数组a和&a 地址相同,步长不同a: 步长元素,首元素的地址a+1 下一个元素&a:步长数组,整个数组的地址&a+1 下一个数

2017-10-20 01:39:48 246

原创 C语言(五)--语句

程序语句可以分为:顺序,分支,循环if语句:布尔变量与零比较!整型变量与零比较"==""或!="与0比较浮点变量与零比较浮点转化成">="或"指针变量与零比较"=="或"!="与NULL比较if( 0 == p) 防止将if(p == 0)写成if(p = 0)switch(表达式){cas

2017-10-20 01:39:11 209

原创 C语言(四)--格式输出说明符含义

%d:按十进制有符号整数输出,正数符号省略%u:按十进制无符号整数输出%c:按字符型数据输出%s:按字符串数据输出%f:按小数形式输出(6位小数)-:输出数据左对齐(默认右对齐)+:指定在有符号数的正数前显示正号(+)%-8.4f:左对齐,输出8位长度,4位小数

2017-10-20 01:36:02 672

原创 C语言(三)--运算符与表达式

运算符有以下几类:(1)算术运算符:+ - * / %(2)关系运算符:> = (3)逻辑运算符:! && ||(4)位运算符: > ~ | ^ &(5)赋值运算符:=(6)条件运算符:( ? :)(7)逗号运算符:( , )(8)指针运算符: * &(9)求字节数运算符: sizeof(10)强制类型转换运算符: (类型)(11)分量运算符: .-

2017-10-20 01:35:27 247

原创 C语言(二)--数据类型

整型:int,一般占4个字节单精度浮点数:float,一般占4个字节双精度浮点数:double,一般占8个字节字符型:char,一般占1个字节,默认字符由各个编译系统决定是有符号整数或者是无符号整数数据类型转换:(系统自动进行的)高↑ double ←float↑ ↑↑ long↑ ↑↑ unsigned↑ ↑低↑ int ← char、

2017-10-20 01:34:24 156

原创 C语言(一)--其他关键字

(关键字)sizeof:求数据类型字节数 sizeof.c#include<stdio.h>int mian(){ printf("int %d\n",sizeof(int)); printf("short %d\n",sizeof(short)); printf("long %d\n",sizeof(long)); printf("double %d\n",s

2017-10-14 15:48:44 399

原创 shell脚本

什么是shell?命令解析器,将用户输入的指令转化为机器可运行程序#!/bin/sh 或 #!/bin/bash 声明这是shell脚本,固定格式重定向符> 原内容被擦除>> 原内容不被擦除,而是在后面添加默认变量$# 传入脚本命令行形参个数$* 所有命令行的参数值,在各个参数值之间留有空格$0 本身$1 第一个参数$2

2017-10-14 00:53:07 190

原创 Makefile文件

Makefile文件由以下三项基本内容组成·需要生成的目标文件(target file)·生成目标文件所需要的依赖文件(dependency file)·生成目标文件的表意规则命令行(command)基本格式target:dependency(tab键)command例:Makefile文件CC=gcctarget=helloboject=hello

2017-10-13 21:59:52 691

原创 GDB调试器

gcc -g test.c -o test 对test.c进行编译,参数g是的作用是把调试信息加入生成的test可执行文件中gdb test 启动gdb对test进行调试l (list)查看代码行数,GDB以为单位进行显示。一次显示10行b 函数名/行号 (breakpoint)设置断点info b 查看断点情况r (run)运行程序p 变量名 (print)查看变量值

2017-10-13 21:59:07 799

原创 vim编辑器

分为三种模式:命令行模式、插入模式、底行模式·命令行模式:控制屏幕光表的移动,字符,字或者行的删除,移动复制某区段及进入插入模式或底行模式按[a]或者[i]进入插入模式按[:]冒号进入底行模式yy 复制#yy 复制光标所在的改行“往下数”#行文字dd 剪切#dd 从光标所在行开始删除#行p 粘贴u 恢复x 删除

2017-10-13 21:58:41 303

原创 GCC编译器

命令格式:gcc [选项] [文件名] [选项] [文件名]GCC编译器分为四个阶段:·预处理首先把头文件stdio.h中的内容展开加载到test.c中在shell中输入命令"gcc -E test.c -o test.i"参数E告诉gcc命令只进行预编译,不做其他处理参数o用来说明输出的文件名为test.i·编译词法分析:检查关键字

2017-10-13 21:57:45 343

原创 C语言基础学习(三)--语句

程序结构可以分为:顺序、 分支和循环1分支结构(if-else) 1)if-的使用形式 如果条件为真执行语句块1,否则跳过。 If(常量/变量/表达式){ 语句块1; }2) if –else形式 如果条件为真执行语句块1,为假执行语句块2。 If(常量/变量/表达式){ 语句块1; }else{ 语句块2; }3)if-else 嵌套形式

2017-10-12 22:38:45 331

原创 C语言基础学习(二)--运算符表达式

1、什么是运算符运算符是特定的算术或者逻辑符号2、什么是表达式表达式是将同类型的数据用运算符按照一定规则连接起来的式子,表达式一定有返回值,表达式后加分号构成表达式语句3、运算符按功能分类算术运算符、关系运算符、逻辑运算符和按位运算符。 4、运算符按操作数分类单目运算符、双目运算符和三目运算符。5、表达式分类算术表达式、关系表达式、逻辑表达式6、常用的运算符

2017-10-12 22:37:57 297

空空如也

空空如也

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

TA关注的人

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