![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 51
Dannii_
一名苦逼加班的 做游戏的 后台开发的 程序猿 =_=
展开
-
二叉堆的构建、插入、删除等操作
共享内存就是两个或者多个进程共享的一块区域。只要一个进程改变了这块地址中的内容的时候,其他进程便会察觉到改变的内容。(1)创建共享内存 int shmget(key_t key, int size, int shmflg) (2)将共享内存映射到自己的内存空间 void* shmat(int shmid, const void* shmaddr, int shmflg) shmi...原创 2020-06-20 15:51:59 · 2210 阅读 · 0 评论 -
C 和 C++ 关于 const 的比较
C 语言中 const 修饰符:const 修饰的变量不是真正意义上的常量,而是一个常变量无法直接修改,但是可以间接修改变量的值。会分配内存空间,因此可以通过指向其地址空间的指针去修改其内容。const int b = 10; int * p = (int *)&b;*p = 30;printf("%x\n" , &b); // 313b1df4prin...原创 2020-04-18 17:58:36 · 250 阅读 · 0 评论 -
struct 结构体 所占字节数的计算
定义结构体类型,只能说明该类型的组成情况,并没有分配内存空间。只有当定义属于结构体类型的变量时,系统才会分配空间给该变量。原创 2019-10-17 16:10:18 · 16087 阅读 · 1 评论 -
c++ 指针常量、常量指针、函数指针等详解
指针(1)指针本身就是个对象,允许对指针赋值和拷贝。生命周期内它可以先后指向几个不同的对象。(2)指针无需在定义时赋初值。和其他内置类型一样,在块作用域内定义的指针如果没有被初始化,也将拥有一个不确定的值。(3)指针存放某个对象的地址。可以使用取地址符 & 来获取地址(4)如果指针指向了一个对象,可以使用解引用符 * 来访问该对象(5)void* 可以存放任意对象的地址。但是我...原创 2019-10-06 19:01:04 · 491 阅读 · 0 评论 -
strcpy和memcpy的区别
(1)复制内容不同strcpy 只能复制字符串,除了复制字符串内容外,还会复制字符串的结束符memcpy 可以复制任意内容,例如字符数组、整型、结构体、类等。(2)复制的方法不同strcpy 不需要指定长度,遇到被复制字符串的串结束符 '\0’才结束,所以容易溢出memcpy 对于需要赋值的内容没有限制...原创 2019-08-10 11:03:22 · 156 阅读 · 0 评论 -
double类型值相等判断
两实数相等:两实数的差在允许的范围内认为相等既可认为是相等的。范围:1e-6(0.000001)主要代码:int IsEqual(double a,double b){ return fabs(a-b) < 0.000001;}整个判断代码#include <iostream>#include <cmath>using namespace std;int IsEqual(double原创 2017-01-16 19:34:50 · 9641 阅读 · 0 评论 -
c++ 预处理
#预处理:编译之前的处理。不做语法检查,宏定义不分配内存宏宏替换的本质------文本替换(1)宏名一般大写,宏名和参数的空格间不能有空格,宏定义末尾不加分号。如: #define BASE 4(2)宏只做替换,不做语法检查,不做计算,不做表达式求解#define FUNC(x) x*xint a = 3,b = 4;FUNC(a+b) = a+b*a+b = 3+4*3+4 ...原创 2019-05-06 11:45:35 · 300 阅读 · 0 评论 -
-1 对256求模的值为255?
把-1赋值给一个8位的uinsigned char,结果是255?#include &amp;amp;lt;iostream&amp;amp;gt;#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;stdlib.h&amp;amp;gt;using namespace std;int main(){ unsigned原创 2019-01-09 14:17:15 · 1803 阅读 · 2 评论 -
c++ 类成员变量初始化顺序
我们通常说的Java是可以跨平台运行的,那么他是如何做到跨平台运行的呢。靠的就是JVM虚拟机。通常我们把自己编写好的Java代码编译生成class字节码文件,然后Java虚拟机加载这些字节码文件,解析这些字节码指令。Java虚拟机有自己完善的硬件架构,如处理器栈、堆栈、寄存器等,还有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得java程序只需要生成在Java虚拟机上运行的目标代码原创 2018-05-31 16:41:55 · 2323 阅读 · 0 评论 -
c++ 如何限制一个类对象实例只建立在堆上、或只建立在栈上
#include<iostream>#include <cstring>using namespace std;//new运算符://(1)执行operator new()函数,在堆空间中搜索何时的内存并进行分配。//(2)调用构造函数构造对象,初始化这片内存空间。//如何限制一个类对象只能建立在堆上?//也就是不能创建在栈上,把构造函数设置为私有。但是n...原创 2018-05-29 16:25:40 · 1062 阅读 · 0 评论 -
c++ 虚函数多态、纯虚函数、虚函数表指针、虚基类表指针详解
静态多态和动态多态–虚函数、纯虚函数静态多态:程序在编译阶段就可以确定调用哪个函数。这种情况叫做静态多态。比如重载 动态多态:在运行期间才可以确定最终调用的函数。需要通过虚函数+封装+继承实现。虚函数 1、虚函数都必须有定义 2、虚函数一般用在继承中。多个子类继承同一基类,若在某种行为上不同的派生类有着自己的实现方式。这种情况我们就会用到多态。采用在基类中将此函数定义成虚函数,派生类...原创 2018-05-24 14:22:58 · 3789 阅读 · 0 评论 -
c++ 顶层const指针和底层const指针的解读技巧
画一条穿过*位置的垂直直线 如果const出现在线的左边,说明指针指向的数据为常量 如果const出现在线的右边,说明指针本身是常量 如果const在线的两边都出现,说明两者都是常量。...原创 2018-05-23 09:41:17 · 531 阅读 · 0 评论 -
常用的vi和vim操作
visual模式下: gg:命令将光标移动到文档开头 G:命令将光标移动到文档末尾 w:移动到下一个单词 b:移动至单词的开头 dd:删除一行(光标所在行) 23dd:删除光标坐在行一下的23行命令行模式下。首先,输入:进入命令行模式(1)23 d:删除第23行 (2)23,32 d:删除从23到第32行(3)/string:从光标所在处向后查找对应的字符串命令 (4)?string原创 2018-04-20 20:36:31 · 241 阅读 · 0 评论 -
C++ 数组、数组指针、指针数组、动态数组等详解
先了解一下数组的结构,然后接着了解动态数组的结构。 数组数组: (1)数组大小固定。 (2)数组是一种复合类型 (3)存放类型相同的对象的容器,需要通过所在位置访问这些对象。 (4)数组的元素应该为对象,因此不存在引用的数组 (5)维度:数组中元素的个数,必须大于0,编译的时候维度应该是已知的,也就是说,维度必须是一个常量表达式。 (6)不能将数组的内容拷贝给其他数组作为其初始值,也不原创 2018-04-15 17:15:07 · 4502 阅读 · 1 评论 -
C++ 容器详解
顺序容器:此处的顺序不是体现在元素的值的顺序,而是指的是元素加入容器时的位置相对应的。 关联容器:顺序容器分类: 类型 特点 vector 可变大小数组 支持快速随机访 在尾部之外的位置插入或删除元素可能很慢。 deque 双端队列 支持快速随机访问 在头尾位置插入/删除速度很快 list 双向链表 只支持双向顺序访问 在list的原创 2018-04-14 20:35:56 · 6299 阅读 · 1 评论