自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 智能指针

这里是一个例子这是运行结果PS:上面的思路都是个人的观点,如果有哪里错误的,希望大家评论区留言指正,我每条评论都回去回复的^ - ^

2019-08-20 09:36:40 170

原创 new和malloc的区别

最近在复习,赶紧记录一下,以便后面复习new和malloc的区别主要是有八点区别:new分配内存按照数据类型进行分配,malloc分配内存按照大小分配new不仅分配一段内存,而且会调用构造函数,但是malloc则不会。new的实现原理?其实new的底层是malloc,他会先调用malloc申请内存空间,然后再调用构造函数。malloc实现原理?malloc函数用于动态分配内...

2019-08-17 09:30:01 428 3

原创 函数重载

首先先看一下函数重载的几个条件:①:同一作用域内几个函数名字形同但形参列表不同②:形参数量或形参类型不同,返回值不同不算③:顶层const不算但你调用fun函数时,会显示+1重载,意思是只有两个版本。编译器会报错④:如果形参是某种类型的指针或引用,通过区分其指向的是常量对象还是非常量对象这几个定义就是四个重载的函数⑤:在内层作用域声明函数名字,他将隐藏外层同名实体...

2019-08-10 21:21:27 173

原创 const与指针

const指针有两种形式,一种是顶层const,一种是底层const有一种很简单的鉴别是顶层const还是底层const的方法:只要看*在const的左边还是右边就行了,左边则是修饰被指物,即被指物是常量,不可以修改它的值;右边则是修饰指针,即指针是常量,不可以修改它的指向;在左右两边,则被指物和指针都是常量,都不可以修改。顶层const:const底层const:const当执行拷贝操...

2019-08-10 20:51:46 208

原创 memcpy需要注意的坑

题记:今天看到一道memcpy的题,差点载了,赶快来记录一下首先是函数原型:void * memcpy ( void * destination, const void * source, size_t num );@destination:目的地址@source:源地址@num:字节数将source指向的地址处的num个字节拷贝到 destination 指向的地址处注意是这里...

2019-08-05 15:43:52 6261 3

原创 【剑指Offer】第22题:链表倒数第K个节点

目的:记录一下刷题的过程题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点。首先拿到这道题的第一想法就是遍历,记录一下总共有多少个节点,假设为n个,然后倒数第k个节点就是从头结点开始的第k-n+1个,然后我...

2019-08-01 15:39:12 94

原创 【剑指Offer】第21题:调整数组顺序使奇数位于偶数前面

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。首先我们贴上源码#include <iostream>using namespace std;void ReorderOddEven(int* num, int len){ if (num == nullptr || len == 0) retur...

2019-08-01 14:56:09 93

原创 【剑指Offer】第19题:正则表达式匹配

题记:记录一下自己的刷题过程题目:请实现一个函数用来匹配包含’.‘和’ * ‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’*'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab * ac * a"匹配,但与"aa.a"及"ab *a"均不匹配。首先贴上源代码bool matchCore(char ...

2019-08-01 09:25:39 143

原创 【剑指offer】第18题:O(1)时间删除链表的节点

内容:记录一下刷题的过程首先附上源码#include <iostream>using namespace std;typedef struct Node{ int m_nValue; struct Node* pNext;}ListNode;void DeleteNode(ListNode** pHead, ListNode* pToBeDelete){ i...

2019-07-28 15:41:32 106

原创 【剑指Offer】第17题:打印从1到最大的N位数

内容:记录一下刷题的过程首先先附上源码#include <iostream>using namespace std;void PrintNum(char * num){ bool isBeginning = true; int len = strlen(num); for (int i = 0; i < len; ++i) { if (isBeginni...

2019-07-28 14:47:41 165

原创 C语言三个线程轮流打印数字(顺序打印)

题目:三个线程轮流打印数字,从0开始,其中:线程1打印:0,3,6----线程2打印:1,4,7----线程3打印:2,5,8----以此类推在博客看到很多都是用Java和c++实现的,我想用c+来实现一下。下面看代码;#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#i...

2019-07-27 15:36:52 3811

转载 如何定义一个只能在堆上(栈上)生成对象的类

来源: https://www.nowcoder.com/questionTerminal/0a584aa13f804f3ea72b442a065a7618简要描述在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。 静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间...

2019-07-20 18:44:36 220

原创 一个类有基类、内部有一个其他类的成员对象,构造函数的执行顺序

首先记住一句话:先父母,后客人,再自己首先调用基类的构造函数,在派生类的构造函数体执行之前会调用成员对象的构造函数来初始化成员对象,然后如果派生类的构造函数参数有成员对象的参数,则在构造函数中对成员对象赋值,这样的成员对象构造方式要分两部分,所以把成员对象放在初始化列表中效率要高一点,最后再执行派生类的构造函数体。下面来看一下代码可以看出来是先调用的基类的构造函数,在调用派生类内部定义的...

2019-07-20 16:54:25 1845 1

原创 头文件中用尖括号和引号的区别

#include<filename.h>系统检索头文件时会先从系统文件里开始找 ,再找其他地方。用于系统文件较快。#include"filename.h"系统检索头文件时先从程序所处目录开始查找,若未查询到,则从系统文件开始查找。用于自定义文件较快。另:头文件的作用:头文件在计算机C语言家族程序中被大量使用,主要作用在于多个代码文件全局变量的重用、防止定义的冲突,对各个被调用...

2019-07-20 15:38:40 362

原创 两个线程同时对同个内存变量调用了i++ 100次,结束后i值可能的变化

有很多博主说是200,这没错,确实有可能是200,但是!首先,i++的操作并不是单独的一条指令,他实际在内部是由三条指令构成的1.首先,他把i的值从CPU寄存器中拿出来2.然后,把寄存器中的值+13.最后,把寄存器写回到内存中在单核CPU中:他需要执行:100*2 *3 = 600条指令,每条指令都有可能被抢夺CPU,这就是问题的关键所在首先结论是:最小为100,最大为200为...

2019-07-20 15:28:39 3496 3

原创 TCP三次握手,四次挥手(详解及图解)

我们知道TCP是面向连接的传输层协议。TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。所以,运输连接就有三个阶段,即:连接的建立,数据传送和连接的释放。TCP连接的建立TCP建立连接的过程叫做握手,握手需要在客户和服务器之间交换三个TCP报文,以下就是TCP建立连接的三报文握手:three way(three message)handshake,也称之为三次握手。假...

2019-07-17 22:45:16 1006

原创 readn,writen和readline函数

为什么需要这个函数在字节流套接字上调用read或者write输入或输出的字节数可能比请求的数量少,然而这不是出错的状态。这个现象的原因在于内核中用于套接字的缓冲区可能已经到达了极限。这个时候所需的是调用者再次调用read或write函数,以输入或输出剩余的字节。有些版本的Unix在往一个管道中写多余4096字节的数据时也会表现出这样的行为。这个现象在read一个字节流套接字时很常见,但是在wr...

2019-07-15 23:08:38 571

原创 大小端模式

首先先了解一下什么是大端和小端。小端:将低序字节存储在起始地址,这称为小端字节序。通俗理解就是:低字节–低地址大端:将高序字节存储在起始地址,这称为大端字节序。即:高字节–低地址例如:我们将0x12345678写入从0x0000开始的内存中,则结果为其实X86系列的CPU都是小端字节序但是我们怎么知道一个数在计算机中是以大端序列存储还是以小端序列存储的呢?下面给出两种方式来求出数据在...

2019-07-14 21:33:01 755

空空如也

空空如也

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

TA关注的人

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