自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WX Never Give Up!

菜鸟小白在西安~~

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

原创 C++知识点

C++  一、C和C++区别 关键字数量不同:c++有些关键字在C中没有,在C中可以作为函数和变量的标识 标准输入输出不同:C是printf和scanf,C++是cout和cin,cout和cin是类的实例,C++使用类来实现输入输出(C++仍旧可以使用printf和scanf) C++函数原型中可以声明一个或多个带有默认值的参数(从右向左连续) C++支持函数重载(...

2018-09-14 09:18:38 237

原创 测试——Gtest

GoogleTest——Google C++单元测试框架(跨平台)gtest是开源工程的测试框架,不止针对特定的平台,使用的范围比较大,所以gtest的复用性和可移植性好。 单元测试一般由测试人员完成,目的是隔离程序部件,并证明这个单个部件满足预期 的功能 提供了丰富的断言、致命和非致命失败判断,能进行值参数化测试、类型参数化测试、“死亡测试; 可以自动发现测试,断言集,用户定义的断言,...

2018-09-13 15:21:35 529

原创 LeetCode——关于二级指针和++/--与*的例题

(1) ++比*的优先级高,所以先++,cpp是二级指针,++cpp表示cp+2是cp指针向后移动两次,指向c+2,c+2表示"POINT",所以(1)输出的是POINT(两次解引用结果是C的值) (2) 经过(1)后cpp指向cp的c+2,也就是cp+1的位置,经过++cpp就是cp+2的位置,(从这里开始cpp的位置就不变了)cpp指针解引用为cp的c+1,c+1就是指针 指向c中...

2018-09-05 07:54:26 750

原创 C语言知识重点

一、指针、数组       1.指针的概念:是指指针所存在的内存单元存放的地址,这个地址指向的是       变量单元,看似指针指向变量。       2.指针的使用              指针初始化:1.  0值常量表达式,将const的0值赋给指针                                   (const int a =0; int *p=0; ...

2018-09-05 07:46:36 488

原创 代码到程序运行过程

程序运行过程    1.编译        a.预处理:删除注释,宏替换,头文件展开,条件编译        b.编译:词法分析,语法分析,语义分析,符号汇总(生成汇编代码)        c.汇编:将形成的汇编代码转为二进制代码,形成对应的符号表    2.链接:合并段表以及符号表的重定位,生成可执行文件    3.加载:将可执行文件加载到内存中运行链接:静态链接器加载:加载器...

2018-09-01 16:30:42 404

原创 小项目——通过http服务器访问网页

http服务器:1.目的:通过浏览器,发送一个标准的http请求,得到标准的http响应。               如果请求的是HTML网页,响应后可以在浏览器看到请求的网页内容。   接收请求:    a)GET请求    b)POST请求   响应请求:    a)根据url返回服务器上的静态文件(html/css/JavaScript/图片……)    b)根据请求的参...

2018-08-19 21:34:07 2290

原创 写个制作系统的心得(小牢骚!!)

一直以来,就是比较喜欢搞电脑,当然一切的配置使用都是为学习编程服务的,从很早以前在网上观摩别人的安装操作,安装系统的过程一路真是坎坎坷坷,许多人遇不到遇得到的问题我都遇到了,但是也是开心能够遇到平时不太常见的问题(当然解决起来不容易就很想要抓头发啊!!!),这样在某种层面来说,对于我的学习也是有一定帮助的,我认为只有更好的了解电脑或者系统的知识,当然,主要原因我很喜欢拾掇(西安话!!)电脑各种配置...

2018-04-30 00:13:04 296

原创 网络——高级IO

2018-04-15 23:14:28 184

原创 HTTP——HTTP协议

2018-04-15 23:11:35 453

原创 剑指offer——从尾到头打印链表

学习了很久的链表结构,但是在一些链表面试题中却没办法很好的使用其他的相关数据结构来解决链表的问题,就比如在书中的链表逆序打印问题(这里指的是单向链表);输入一个链表,从尾到头打印链表每个节点的值。开始我的思路就是给链表额外添加一个指针,将指针指向链表中的每个节点的时候,改变节点的next指向,但是会有一旦改变某个节点的指向就会使得下一个节点找不到,从而不能实现逆序打印,如果在改变指向前保存下一个节...

2018-03-20 17:22:20 169

原创 static关键字

2018-01-20 19:15:58 178

原创 C库函数

常见的C库函数首先,在vs环境下,scanf不安全,需要在最前面加上#define _CRT_SECURE_NO_WARNINGS 来自 https://tieba.baidu.com/p/4338611069>这句话,以保证scanf安全,也可以使用新标准scanf_s。 一、strxxx1.strcpy字符串拷贝 2.strncpy指定的N个字符

2018-01-20 19:05:43 443

原创 Linux——开发工具

Linux编辑器1、在Linux下,常用的编辑器是vim和vi,除此之外,Linux编辑器还有默认编辑器nano,试着尝试了一下,我觉得nano的界面更简洁,控制起来与vim还是稍有区别的,在指令的执行上面,虽然在一开始输入的时候不需要像vim要先按I,可以直接输入,这一点我还是非常喜欢的,鉴于nano我还没有配置,如果以后有时间会试着配置一下nano。nano编辑器更接近于vim/vi,通过全屏输

2017-12-30 14:07:48 1196

原创 Linux目录权限

1.在Linux我们要进入一个目录首先要有读的权限才可以进去,当然如果想要更改某些东西,写的权限也是必不可少的。2.在目录中执行增删查的权限 cd——进入目录或者文件,需要读的权限,但是写的权限不一定需要。 touch——增加文件,需要有此目录下的读与写的权限,如果需要执行文件,还需要可执行的权限。 ls——显示某路径下的目录或者文件,需要可读权限。 rm——删除文件或者目录,需要读写权限。

2017-11-22 17:51:20 295

原创 Linux目录

Linux下的重要目录 /proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp (1)/proc proc目录是基于内存的系统文件,通过proc目录可以查看计算机的信息 proc在运行时访问内核内部数据结构、改变内核设置的机制。 这个目录相当于Windows下的计算机系统信息查看以及进程动态查看等等。 这就是proc目录下

2017-11-22 17:23:55 256

原创 二叉树的线索化及其迭代器

1.不借用栈或者队列来实现遍历的非递归,还有一种方法是线索化。 2.为了实现迭代器,面向对象。线索化也分为前中后序的线索化。 线索化有前驱和后继。 一棵树只能被线索化成一种方式。 树和图重要的区别是有没有环,树没有环,图可以有环。 当出现上面的问题时,是因为最后一个结点没有线索化,导致程序崩了。访问中序线索化后的二叉树: 现在我们就开始前序的线索化,注意二叉树同时

2017-11-13 23:47:21 337

原创 表达式计算

表达式计算 例如: 2 - 3 * 4 + 5 这个表达式 下面是按照后缀表达式来写的程序,即表达式在栈中存放的顺序是2,3,4,’-‘,’*’,5’+’ 的顺序存放,碰到数值就压入栈中,当碰到运算符时候,先存入栈,当下一个运算符压入栈时比较两个运算符的优先级,如果两个运算符优先级相同,就继续入栈,知道所有的数值和运算符都入栈然后再按顺序使用top()来取栈顶,取两个值,和一个运算符就计算

2017-11-08 20:54:08 381

原创 智能指针

智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象的指针指向同一对象。——摘自百度百科 简单来说,就是当同一个对象有多个指针指向它本身时,需要记录指向对象本身的指针个数,而智能指针就是利用引用计数的方式在记录指针,算作对于指针而言的管理层,有效的管理指针所指向的动态资源的

2017-11-08 19:47:01 306

原创 有关于模板的分离编译

模板分为模板类和模板函数。分析为什么模板不支持分离编译?首先,定义模板类需要template,而定义模板的目的就是为了在写代码的时候不需要考虑代码的多种类型,重复率高的代码段,降低效率还增加编译器的复杂性,为追求更高效的代码编译方法,使用模板来编写代码。 其次,既然是模板,在可以重复利用的代码段就不会考虑数据类型,但是当函数调用时候,即需要数据参与的时候就需要对模板实例化,这时候如果分离编译,就不

2017-11-06 14:15:21 347

原创 linux初学习

Linux重要指令: du, df, top, free, pstack, su, sudo(sudo -, sudo -s), adduser, password 磁盘空间: du——显示目录或者文件的磁盘大小,以及计算软硬链接的源文件所占的磁盘空间大小。 df——显示磁盘使用情况的统计。 top——性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的

2017-11-06 14:05:54 204

原创 文件压缩(c++)

有关于文件压缩的思想和问题。 http://note.youdao.com/noteshare?id=b90b140807dcfbd01d4fd85eff1e938eHeap.h文件(堆)#pragma once#include<iostream>#include<vector>#include<assert.h>using namespace std;templat

2017-11-01 21:03:27 1615

原创 栈和队列

栈:#pragma once//template<class T>//静态//class Stack//{//protected:// T _a[N];// size_t _top;//但是这种定义方式不好//};//动态template<class T>class Stack{public: Stack() :_a(NULL) ,

2017-10-26 13:15:21 239

原创 迷宫问题

迷宫需要解决的问题: 1.如何找到通路? 首先在迷宫的入口点进入迷宫,分别别探测上下左右四个方向是否是通路(四个方向不通为1,通为0),如果是可通的方向将此方向的值改为2,接着再走下一个地方,直至走到四个方向中有一个方向是NULL,也就是走到迷宫的边缘,结束。 2.如何解觉没有通路的问题? 最初我们使用死循环来持续判断通路,但是如果迷宫没有通路,就需要判断条件path.empty(),判空条

2017-10-26 13:09:42 651

原创 STL list基本实现

pragma onceincludeincludeusing namespace std;template struct ListNode { ListNode*_next; ListNode*_prev; T _data; ListNode(const T&x) :_data(x) , _next(NULL)

2017-10-16 21:06:52 263

原创 vector的基本模拟实现

vector内部相当于顺序表实现。pragma onceincludeincludeusing namespace std;template class MyVector { typedef T*Iterator; public: MyVector() :_start(NULL) , _finish(NULL) , _e

2017-10-09 21:34:47 343

原创 vector和list的使用(顺序表和链表)

STL—-标准模板库:1.可复用的组件库 2.包罗算法和数据结构的软件框架 STL的六大组件 1.容器—-各种数据结构 2.迭代器—-扮演容器和算法的胶合剂 ↓ 区间:左闭右开,不支持比较大小。迭代器是单参数的构造函数 3.空间配置器—-负责内存空间的分配与管理 4.配置器—-一种修饰容器或者仿

2017-09-28 18:24:57 993

原创 菱形继承

1.分析菱形继承的问题。 class Person{public: string _name;};class Student:public Person{protected: int _num;};class Teacher:public Person{protected: int _id;};class Assistant:public Studen

2017-09-24 20:15:32 191

原创 多态与继承

1.什么多态? 多态就是可以允许将父对象设置成为一个或者多个子对象相等的技术,赋值后,父对象就可以根据子对象当前的特性以不同的方式运作。 当使用基类的指针或引用调用重写的虚函数时,当指向父类调用的就是父类的虚函数,指向子类调用的就是子类的虚函数。 形成多态的条件: 1.虚函数的重写。

2017-09-18 18:40:59 413

原创 string类的引用计数的写时拷贝分析

写时拷贝(copy-on-write) 使用了引用计数的复制方法,在复制的时候会有一个变量来保存引用的次数,类似于: 假设A要管理S1这块空间,然后B也想要管理使用S1,写时拷贝不需要把S1复制一份再让B去管理修改,而是将B的指针指向S1这块空间,则S1就被A和B同时管理使用,减少了系统开支,提升了系统性能。 但是在程序结束调用析构函数进行释放空间的时候

2017-09-13 18:29:53 244

原创 c++动态内存管理

1.c的动态内存管理细节malloc 、calloc、realloc都可以动态内存开辟malloc开辟不初始化,而calloc开辟初始化为0,且两者返回值地址都为起始地址,返回类型为void*,用free()释放。realloc有两个参数调整的空间起始地址,要调整的大小>,必须要接收返回值。①拷贝释放原来的空间要开辟的空间不足>②直接加开辟的空间开辟足>2.c动态管理在

2017-08-05 22:14:56 227

原创 c++ 引用的学习

1.学习引用  (1)引用是c++对c的一个重要的扩充,在c++中,变量的“引用”就是变量的别用,因此引用又成为别名。(2)当声明了一个引用时,必须同时用另一个变量的名字来将它初始化。int i = 10;int &j = i;//这里的j即为i的引用,利用i对j进行初始化(3)相当于一个变量名会有许多“外号”一样,无论叫哪个名字或者说“外号”,都指的是同一个变量。#inc

2017-07-24 17:15:26 330

原创 c++相关基础学习

1.剖析C++是如何实现重载的?          在c++中,同名的函数可以完成不同参数列表,可同可不同的返回值的函数。例如:int Add(int a,int b){return a+b;}double Add(double a,double b){return a-b;}       int main(){coutcout}//

2017-07-24 15:54:23 240

原创 字符串操作函数模拟实现

1.模拟实现strcpy2.模拟实现strcat3.模拟实现strstr4.模拟实现strcmpchar* my_strcpy(char* str,const char* p){assert(str != NULL);assert(p != NULL);char*s = str;while ((*s++ = *p++) != '\0'){

2017-05-31 10:07:40 270

原创 运用for循环在数组中进行 一些变换

调整数组使奇数全部都位于偶数前面。题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。void Adj(int *arr,int len){int i,j;for (i = 0; i {for (j = 0; j {if (arr[i]%2 == 0

2017-05-09 22:33:00 816

原创 小题练习

二进制颠倒unsigned int  reverse_bit(unsigned int num){int i;int sum = 0;for (i = 0; i {sum += ((num >> i) & 1) * pow(2, 31 - i);}return sum;}int main(){int num = 25;//权重unsigned

2017-05-08 21:46:39 248

原创 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)

首先将整个字符串颠倒过来 也就是将数组逆序存储,【写代码时我把定义的临时变量mid定义成arr[mid],并且还将mid 初始化为0,导致后来一直出错,不可以定义下标,因为下标都是有left和right来控制的】其次再将每个单词颠倒,这里我出现的问题比较多,开始我是苦恼于应该用if语句还是while语句判断条件,但是之后是需要不断调整left和right并且再次交换字符的,所以这里用while

2017-05-08 19:55:58 492

原创 str-...的函数的模拟实现学习

int main(){int mid = strcmp(s1, s2);printf("%d\n",mid);return 0;int len = strlen("hello,world!");printf("%d\n",len);//strlen模拟实现:计算长度,/0为止char arr[10] = { 0 };strcpy(arr, "hello,world!

2017-05-08 17:55:38 217

转载 程序编译过程图

程序编译过程

2017-05-04 21:16:50 628

原创 宏和函数的区别

宏:所谓宏,就是一些命令组织在一起,作为一个单独命令完成一个特定任务。宏与函数的比较:  宏:比函数短而且快,比函数类型广,且宏不需要求参再传参。函数:可以调试,可以递归,不需要加许多括号以防止运算顺序出错,并且有类型检查,但需要求参后再传参。例:宏:#include#define PRINT(FORMAT,VALUE)int main(){       

2017-05-04 20:57:18 242

原创 数组运算相关学习

数组的运算sizeof运算的是地址长,也就是一个对象或者类型所占的内存字节数。sizeof()中,只有sizeof(a)指的是数组总大小,&a指的是数组的地址。除此之外,其他遇到数组名都是指的是数组首元素地址#include#includeint main(){一维数组int a[] = { 1, 2, 3, 4 };printf("%d\n", sizeo

2017-04-23 15:23:11 296

空空如也

空空如也

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

TA关注的人

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