自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 vector实现原理

转载https://blog.csdn.net/u012658346/article/details/50725933个人认为,写得很nice~~~

2019-08-19 14:44:36 563

原创 鸡肋面试:三次握手能不能变成二次?

在面某图的时候,面试管问我 三次握手能不能变为两次,我说不行 并解释了三次握手的过程,然后试图用这个过程来体现三次握手缺一次都不行。我:三次握手中第一次握手是客户端给服务器发送SYN报文,请求链接;在服务器收到客户端请求之后给客户端回应,回应时发送自己的SYN报文,带上ACK 报文,这也就是第二次握手;然后,客户端给服务器发送ACK报文回应,三次握手完成,连接建立。如果是两次握手,也就是...

2019-08-13 17:46:28 659

原创 在行列递增的二维数组查找数据n

剑指offer上这道题的方法是从二维数组的右上方元素 m 开始查找,若m > n,则 则向下查找;若 m < n,则向左查找。思路挺简单的,但是如果数据量很大,则查找起来就很鸡肋~~~,如下:char Find(int *arr,int rows,int cols,int n){ int found = -1; if(arr == NULL || rows < 0 |...

2019-08-13 17:21:18 261

原创 将字符串中的*移到字符串的前部分,将字符串的非* 部分移到后面,要求非* 部分顺序不变

void Remove(char *arr,int len){ if(arr == NULL || len <= 0) return; int i = len-1; int j = len-1; while(i >= 0) { if(arr[i] == '*') { i--; } else { int tmp = arr[i]; a...

2019-08-13 17:00:15 627

原创 inline和static、宏的区别及内联的注意事项

在说inline函数和static函数的区别前,先说说 static函数和普通函数的区别。static函数和普通函数的区别:函数符号不同。普通函数是global符号,static函数生成的是local 符号。除此区别外,二者并无差别,都有开栈、清栈过程。一、inline函数和static函数的区别:区别1、inline函数无开栈、清栈开销,而static函数有;区别2、i...

2019-07-23 20:09:09 1377

原创 new和malloc的区别

1、malloc是C语言里的一个函数,其功能是通过 void* malloc(size_t size)这个函数实现;malloc 返回值必须经过强转,因为返回值是void* 的泛型类型,不安全; 而new 只是一个关键字。2、malloc 开辟的内存只能在堆上; new 开辟的空间位置不一定在堆上,可能在栈上或者 .bss 段,因此new开辟的内存称为自由存储区;3...

2019-07-23 19:36:28 330

原创 函数堆栈调用过程及调用约定简介

一、函数堆栈调用开栈过程:第一步:自右向左 压入实参 —— 形参的初始化;第二步:压入下一行指令地址;第三步:压入调用方函数的栈底地址;第四步:调转到被调用方函数的栈帧位置;第五步:开辟被调用函数运行需要的栈空间。堆栈调用的释放过程就是开展过程的逆过程。二、调用约定1、约定的形式:_cdecl:C标准调用约定_stdcal:Windows下的标准调用约...

2019-07-23 18:06:35 205

原创 .c / .cpp 文件编译运行原理

源文件编译运行过程中,会经历四个阶段,分别是预编译,编译,汇编,链接。在不同的阶段会产生不同的文件,做不同的事情。运行第 1 步:预编译,生成 .i 文件预编译过程主要做 5 件事情:1、删除#define 并完成文本替换,我们定义的宏就是在与编译阶段完成值替换的;2、删除除 #pragma 以外的所有以# 开头的语句,包括#if 0、#end等;3、递归展开#includ...

2019-07-17 19:46:22 419

原创 C++中可以替代C 语言中的宏使用的方法

一、宏的作用  1、宏可以定义一个类型,例如一个Student类型;  2、宏可以定义一个常量,在预编译期出现该字符的地方直接进行字符替换。  3、宏函数。C++中哪些东西可以替代C语言中的宏的使用?1、typedef      重新命名一个结构体         例:#define Int  int     用typedef 命名之后为  typedef  int Int...

2019-02-27 17:31:15 1075

原创 const 在C语言和C++中的区别

1、修饰的对象不同           在C语言中,const修饰常变量;           在C++中,const修饰常量,值不可以修改。因为在预编译期的时候就将出现使用常量的地方替换成常量的值。2、const 修饰的字符能否被编译通过            在C语言中,arr[a]就不能通过编译,因为 a 是一个变量,变量的大小需要在变量的地址中取值,而只有运行的时候才会在地...

2019-02-27 17:17:10 505

原创 inline、static、宏函数的区别和联系

我们可以从五个方面来谈内联函数(inline函数)、静态函数和宏函数的区别和联系:1、作用域         内联函数和宏函数的作用域为单文件,而静态函数的作用域为本文件。2、可否调试         inline修饰的函数在Debug版本可以调试,Release版本不可以调试。         静态函数在Debug版本和Release版本里都可以调试。        宏函...

2019-02-27 16:49:36 303

原创 Linux中的文件管理命令

一、文件权限管理Linux操作系统每一个文件针对不同的用户提供不同的权限。文件的权限有三种:r (读)     w(写)    x其中,x权限在普通文件中指 执行,在目录文件中指可进入权限。二、文件操作命令查看普通文件:cat   filename.name         将文件中的内容显示在终端上more  filename.name       将文件的内容分布显...

2018-11-20 17:29:45 177

原创 Linux中的用户管理命令和进程管理命令

Linux是一个多用户的操作系统,它存在多个用户信息,多个用户可以同时在系统上登陆工作。Linux的用户权限管理相对比较严格,每个文件对不同的用户提供不同的权限。一、用户管理命令1、存储用户信息在Linux中,用户分为两大类,超级用户(rooty用户)和普通用户(多个);其中,在超级用户的模式下,输入不同的命令可以存储用户的信息。(1)/etc/passwd      存储用户的属...

2018-11-20 16:11:00 460

原创 删掉输出一组数的最后一个空格

在牛客网上做水仙花数的题目,测试用例通过为90%,显示“输出空格或者换行不对”,测试通不过。后来才发现是在输出时printf("%d ")输出格式为370(空格)371 (空格),而测试用例给的结果是370(空格)371.这样,就多了一个空格出来。#include&lt;stdio.h&gt;int main(){ int a,b,c,m,n; while(scanf("...

2018-11-03 15:49:25 3196

原创 Linux目录存储结构简介

在介绍Linux的目录存储结构之前,先将Linux与Windows做一个简单的对比:Linux是一个服务器版的操作系统,开源。它可供多个用户同时登录并使用,包括远程登陆,这也是企业选择Linux作为办公系统的原因。它以命令行为主,系统以对用户输入的命令行进行操作,其内核相对较小。Windows是一个个人版本的操作系统,闭源。它可以设置多个用户,但只用一个用户可以登录,多个用户切换登陆。相比...

2018-10-30 22:11:49 362

原创 结构体大小的计算方法

结构体在春村过程中会有“内存对齐”的要求。在计算结构体大小的时候,谨记两条规则:1、上面定义的常量或者变量类型占用的内存大小是下面定义的倍数;2、计算出的最终值能否整除当前结构体中最大的数据类型。计算下列结构体的大小:1、struct A{ int a; int b;};//8int 类型的常量占用4个字节,两个int型的占用8个字节。2、struct B{ char a;//1+3...

2018-07-09 22:31:48 641

原创 算法时间复杂度的计算方法简介

何为算法的时间复杂度?简单点说就是程序中基本操作的执行次数和问题规模的大小,通常用O(f(n))表示。在计算算法时间复杂度的时候,记住两个要点:1.只考虑高阶项。2.不需要保留系数。记住,不需要系数!!!下面,我们用例题来让大家感受一下算法时间复杂度的计算方法!例1:{++x;s=0;}++x和s=0都是它的基本操作,两条语句都执行一次,f(n)=2=2*1;但是在计算时间复杂度中第二个要点表明不...

2018-06-11 00:33:44 791

原创 C语言中const用法要点简介

在介绍const用法前,先介绍一下“左值”。何为左值?其为被放在赋值符号“=”左边的值。在C语言中存在两个权限,分别是写权限和读权限。写权限在赋值符号“=”的左边,du'qconst的用法要点有四点第一点:限定写权限,将一般变量变为只读变量,即为常变量。给个例子:...

2018-06-05 23:51:40 263

原创 在使用Visual Stedio编程中如何调试

咳咳咳......简单来说,就是5个图标(功能)的应用(1)下断点 何为断点?怎么下断点?断点就是某行代码前的红色圆点。当代码出现bug的时候,可以通过调试修改,而断点的位置一般下在出现问题(比如采用printf打印时)的那行代码前,单击鼠标左键就好;(2)启动调试 。断点配合着启动调试用,快捷键F5;(3)监视 。点完启动调试后,运行结果会一闪而过,这个时候在启动调试图标的左侧会出现监视图标,点...

2018-05-26 01:59:01 375

原创 求整数数字的个数,数字的逐个输出以及数字的逆序

在C程序设计第四版中有一个很经典的习题,题目如下:给出一个不多于5位的正整数,求:(1)它有几位数字(2)分别输出每一位数字(3)按逆序输出个位数字,例如原数字是321,应输出位123.我们知道,判断一个正整数有几个数字,可以让它除10,再让商除,直到最后一个商除10结果为0,在此期间,除10的次数则为整数数字的个数。我们可以定义一个初始值为0的变量count,每除一次10,count+1;最后c...

2018-05-26 01:23:11 555

原创 在数理等式成立时探索进制规则

在IT笔试过程中我们经常碰到这样的题目,以阿里的笔试题为例:假如在n进制下,下面的等式成立,567*456=150216,则n值为多少?A.9             B.10           C.12          D.18对于一个2分的选择题,一看一脸懵逼,再看两脸懵逼(..................小编自己是这样)我们习惯去蒙一个选项,在这里,小编想说蒙答案也是有技巧滴!敲黑板...

2018-05-25 23:04:13 173

原创 浅谈浮点数精度中的误差

    浮点型数据是表示具有小数点的实数的。为什么在C中把实数称为浮点数呢?在C语言中,实数是以指数形式存放在存储单元中的。我们都知道实数是一个连续的无穷集合,即使在0—1这个区间也会有无穷个数,计算机会把1.0000000000001默认为1,也会把0.99999999999默认为1,这样,就会出现误差。   在数学中,我们常常会看到“误差为1m”“误差范围”这样的字眼。比如:官方公布A、B两地...

2018-05-07 11:50:29 1190

空空如也

空空如也

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

TA关注的人

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