![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
Xiao2018428
这个作者很懒,什么都没留下…
展开
-
main函数的参数(int argc,char *argv[])
https://www.cnblogs.com/liuzhenbo/p/11044404.htmlargc:命令行参数的个数 argv:是个数组,每个数组元素都是指向一个字符串的char *,里边存储的内容是所有命令行参数; ./nginx -v -s 5 argc = 4 argv[0] = ./nginx ----指向的就是可执行程序...原创 2020-03-25 20:57:07 · 193 阅读 · 0 评论 -
单例设计模式的DCL双检查锁机制实现
什么是单例设计模式?单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。具体实现需要:(1)将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。(2)在该类内部产生一个唯一的实例化对象,并且将其封装为private static类型。(3)定...原创 2020-03-25 17:01:30 · 247 阅读 · 0 评论 -
第七章 内存高级话题
第一节 new、delete的进一步认识new (delete)是操作符,malloc(free)是函数,new调用了malloc ,在有构造函数的情况下还会调用构造(析构)函数。第二节 new细节探秘,重载类内operatornew、delete第三节内存池概念、代码实现和详细分析(后面再仔细看看)第四节嵌入式指针...原创 2020-03-22 21:01:31 · 174 阅读 · 0 评论 -
第五章 智能指针
第一节 直接内存管理(new/delete)、创建新工程观察内存泄漏第二节new、delete探秘,智能指针概述、shared_ptr基础原创 2020-03-22 15:43:33 · 160 阅读 · 0 评论 -
第四章 模板与泛型
第一节:模板概念,函数模板定义、调用函数模板可以定义在头文件中,被多个文件include也不会出错。第二节类模板概念,类模板定义、使用第三节用typename场合、默认模板参数、趣味写法分析第四节成员函数模板,显式实例化、声明在类的外面定义...原创 2020-03-21 23:01:25 · 95 阅读 · 0 评论 -
C++ 传递数组给函数
https://www.runoob.com/cplusplus/cpp-passing-arrays-to-functions.html原创 2020-03-21 12:41:26 · 173 阅读 · 0 评论 -
第三章 类
第一节:成员函数、对象拷贝、私有成员类的声明和定义写在头文件和源文件中时,倘若多个源文件include了该类的头文件,这里不会出现重复类的重复定义。但是如果换成全局变量就会出现变量重复定义的报错。第二节 构造函数详解、explicit、初始化列表构造函数:在创建类的对象的时候,这个特殊的成员函数就会被系统自动调用。用于初始化类对象的数据成员。(1)构造函数...原创 2020-01-01 21:38:06 · 272 阅读 · 1 评论 -
第二章 基本语言
第一节语言特性 、工程构成、可移植性语言特性:过程式、对象式的程序设计a. 面向过程的程序设计(过程式的程序设计:c语言程序设计):从上往下,逐步求精,按顺序一步一步把问题解决结构:学生:学号,名字,性别,成绩在c语言中,要用结构的话,需要定义一个数与该结构的变量 b. 基于对象的程序设计 和 面向对象的程序设计在C++中,把结...原创 2019-12-11 13:29:15 · 290 阅读 · 0 评论 -
C++产生随机数
C++如何产生随机数?rand()函数可以返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。#include <iostream>#include<cstdlib>//#include <ctime>using namespace std;int main(){ /...原创 2019-11-20 16:40:14 · 250 阅读 · 0 评论 -
关于return后面有无参数,表示什么意思的问题
如果return后面有参数,那么就是返回值;如果没有参数,就表示结束程序。原创 2019-11-12 09:56:50 · 1822 阅读 · 0 评论 -
无符号0减1的结果
定义unsigned int a=0,a-1的结果不是-1,而是4294967295(无符号的0xFFFFFFFF),这是什么原因呢? 首先计算机内部的减法也是通过加法器实现的,也即是说a-1其实在计算机里面是a+(-1),而且有符号和无符号的数相加减,计算机会把有符号的数转化为无符号的数,还有一点计算机存储数据是按照其补码的形式,-1在计算机中存储为它的补码...原创 2019-11-11 23:40:59 · 11499 阅读 · 6 评论 -
C++二重指针理解
做算法题的时候经常会碰到二重指针,看着非常别扭,于是自己敲了一下代码来理解一下这个概念。int main(){ int a = 1; int b = 2; int*p1 = &a; int*p2 = &b; p2 = p1; int**q = &p1; printf_s("%d %d",*p2,**q);}q是一个指向(指向int数据类型指针)变...原创 2019-11-11 17:23:23 · 1400 阅读 · 0 评论 -
C++ 中使用delete删除指针的注意点
p所指的空间。比如 int* p = new int(1);delete p;就会在堆上分配一块内存,当作int类型使用,并赋值为1,将其地址储存在栈上的int*类型的p里。delete p会释放p所指向的内存。而这里p为一自动变量,其本身在程序退出其作用域时销毁。用delete命令处理某个指针,说是把那个指针删除了是不正确的。delete命令指示释放了那个指针原本所指的那部分内存...原创 2019-11-10 20:46:48 · 2733 阅读 · 1 评论 -
C++数组能开多大的问题
函数内申请的变量,数组,是在栈(stack)中申请的一段连续的空间。栈的默认大小为2M或1M,开的比较小。全局变量,全局数组,静态数组(static)则是开在全局区(静态区)(static)。大小为2G,所以能够开的很大。而malloc、new出的空间,则是开在堆(heap)的一段不连续的空间。理论上则是硬盘大小。...原创 2019-11-10 13:53:22 · 1324 阅读 · 0 评论 -
union的用法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-10-23 22:37:02 · 1038 阅读 · 0 评论 -
NULL 与 nullptr
在过去,我们如果要表示一个指针为空,我们条件反射肯定会这么写:int *p = NULL;然而啊,有没有想过这是有问题的,比如下面的这段代码:#include <iostream>#include <string>using namespace std; void func(int* num){ cout << "this i...转载 2019-10-19 21:21:57 · 126 阅读 · 0 评论 -
C++中的upper_bound和lower_bound函数
部分内容转载自https://blog.csdn.net/jsjwangxinleijsj/article/details/82020825upper_bound():返回的是被查序列中第一个大于查找值得指针;lower_bound():返回的是被查序列中第一个大于等于查找值的指针;如下图所示:一、lower_bound;用法:int t=lower_b...转载 2019-07-18 14:50:15 · 1668 阅读 · 1 评论 -
归并排序的C++实现
#include "pch.h"#include <iostream>#include<algorithm>using namespace std;const int maxn = 100;//将数组A的[L1,R1]和[L2,R2]区间合并为有序区间(此处的L2即为R1+1)void merge(int A[], int L1, int R1, int ...翻译 2019-07-24 11:06:40 · 113 阅读 · 0 评论 -
快速排序的C++实现
#include "pch.h"#include <iostream>using namespace std;int Partition(int A[], int left, int right){ int temp = A[left]; //将A[left]存放至临时变量temp while (left<right)//只要left和right不相遇 { ...翻译 2019-07-24 11:37:59 · 88 阅读 · 0 评论 -
scanf和gets读取字符串时的区别
使用scanf("%s",str)读取字符串时,会以空白符(空格、Tab等)和换行符为截至标志,如果一行中有空格,那么scanf只能读取第一个空格前的字符串。 使用gets(str)读取字符串时,会以换行符为截至标志。也就是说,gets可以读取包括空格在内的一整行字符串。可以推出,如果一行只有一个换行符(即该行直接“回车”了),那么将得到空字符串(NULL)。例如,如果要在scanf读取...原创 2019-07-25 11:30:47 · 933 阅读 · 0 评论 -
最大公约数与最小公倍数
最大公约数:gcd(a,b)=gcd(b,a%b),0和任意一个整数a的最大公约数都是a(注意不是0!)递归式:gcd(a,b)=gcd(b,a%b) 递归边界:gcd(a,0)=aint gcd(int a,int b){ if(b==0) return a; else return gcd(b,a%b);}---------------------------...原创 2019-08-12 10:57:08 · 833 阅读 · 0 评论 -
C++中 fill( ) 和memset()的区别和用法
1.首先是头文件的不同fill()函数的头文件是#include<algorithm>memset()函数的头文件是#include<cstring>2.用法的不同memset()函数原型是:void *memset(void *s, int ch, size_t n);函数功能是:将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的A...原创 2019-09-24 11:03:05 · 978 阅读 · 0 评论 -
关于assert()函数的用法
在看有关LeetCode的视频的时候,看到老师有用assert()来处理一些错误的情况,在面试的时候如果在数据的边界问题上加上assert()可以反映出编程者思维的严谨程度。网上有一篇博文讲解的不错,这里先引用一下,以备之后查看。C/C++ assert()函数用法总结:https://www.cnblogs.com/lvchaoshun/p/7816288.ht...转载 2019-09-27 19:58:27 · 190 阅读 · 0 评论 -
C++常用库函数
本文中提到的函数库有:1. 标准C++库字符串类std::string的用法begin 得到指向字符串开头的Iteratorend 得到指向字符串结尾的Iteratorrbegin 得到指向反向字符串开头的Iteratorrend 得到指向反向字符串结尾的Iteratorsize 得到字符串的大小length() 和size函数功能相同max_size 字符串可能的...转载 2019-05-28 11:18:16 · 6619 阅读 · 0 评论