![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
一个纸杯
自律,才能自由
展开
-
随机数的产生——srand(time(0))的误用
rand()C语言中可以只用rand()函数来产生0~RAND_MAX之间的随机数,其中RAND_MAX的值与平台有关,至少为32767,这个函数包含在stdlib.h中。srand()有时候便于测试,我们需要每次重新运行程序,都产生相同的随机数,C语言提供了srand()函数来对随机数生成器进行初始化,也叫做为随机数生成器设置种子,在设置相同的种子之后,调用rand()来生成的随机数序列都...原创 2019-05-25 16:27:05 · 4026 阅读 · 2 评论 -
【c++】深入理解static关键字
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:#include<iostrea...转载 2017-07-10 12:58:33 · 415 阅读 · 0 评论 -
【c++】sizeof(a struct)
空结构体的大小为多少?int main(){ typedef struct{ }s; cout<<sizeof(s)<<endl; return 0;}输出为: 1 说明:本该是0,但是我们在什么结构实体的时候它必须在内存中占用一定空间,否则无法使用,至于具体占用多少,由编译器决定,在vs中为1(来自《剑指offer》)结...原创 2017-08-17 18:16:38 · 464 阅读 · 0 评论 -
【c++】用c++实现简单的进程调度程序
模拟linux实现了基本的资源仓库、进程池、资源申请、资源释放、创建进程、进程调度(多级反馈调度)、进程撤销、时间中断和一个简单的脚本。一个课程实验,很多bug、不完善,只是为了模拟进程调度算法,所以不是真实的申请资源(资源也是模拟的),甚至可以说是just for fun吧,将就着看。个人觉得,这种程序自己写一遍可以加深印象,但不要强求完善,这不是一朝一夕的事,也没有必要,要知道linux的进程...原创 2017-09-20 16:59:55 · 2920 阅读 · 0 评论 -
【c++】野指针
“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。 “野指针”的成因主要有两种:(1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。...转载 2018-03-06 10:55:23 · 886 阅读 · 0 评论 -
【c++】查缺补漏
c++中new操作的返回值:new返回一个指针,如int *p=new int;返回一个指向int的指针,int *p=new int[10],返回一个指向含有10个int元素的数组的首地址。new失败的操作:在早期c++版本中,如果系统不能够满足用户new的内存需求,则继承c语言的处理方法,返回一个指向NULL的指针;后来c++的版本中,则是跑出bad_alloc异常,所以针...原创 2018-03-09 09:56:30 · 279 阅读 · 0 评论 -
c++100本书
100多本C/C++和计算机基础经典书籍推荐下载 1.计算机科学概论 计算机科学概论 2.计算机数学基础 高等数学 线性代数 概率论与数理统计 离散数学及其应用 离散数学教程(北大版) 什么是数学 具体数学:计算机科学基础 3.C语言 谭浩强C程序设计 C primer plus The C programming language C和指针 C专家教程 C陷阱与...原创 2018-03-07 13:32:11 · 280 阅读 · 0 评论 -
【c++】关键字
explicit阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。当类构造函数只有一个参数时应该申明为explicit,阻止构造时隐式转换发生。如:class Test1{public: Test1(int n) { num=n; }//普通构造函数private: int ...原创 2018-01-15 09:38:37 · 180 阅读 · 0 评论 -
【c++】lambda表达式
转载自:链接我是搞C++的一直都在提醒自己,我是搞C++的;但是当C++11出来这么长时间了,我却没有跟着队伍走,发现很对不起自己的身份,也还好,发现自己也有段时间没有写C++代码了。今天看到了C++中的Lambda表达式,虽然用过C#的,但是C++的,一直没有用,也不知道怎么用,就可怜的连Lambda语法都看不懂。好了,这里就对C++中的Lambda进行一个简单的总结,就算是对自己的一个交代,我是转载 2018-01-11 11:29:47 · 238 阅读 · 0 评论 -
【c++】位域
位域 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C/C++语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进制位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以...转载 2017-07-10 12:51:49 · 294 阅读 · 0 评论 -
【c++】类的多态是怎么实现的
多态性C++的多态性实现方法大致可表述为:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。(如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数,此为多态的表现。)C++的多态性是通过迟绑定(运行时动态绑定)技术来实现的。多态实现的关键技术 用virtual关键字申明的函数叫做虚函数,虚...转载 2017-07-04 23:13:58 · 911 阅读 · 0 评论 -
c++中指针问题一个很好的例子
偶尔在问题区看到这个问题,感觉有助于对指针问题理解,所以记录一下,希望给看到的你一些帮助。原创 2017-06-03 11:52:09 · 4375 阅读 · 0 评论 -
【c++】类型转换——隐式转换、C风格显式转换、static_cast,const_cast,dynamic_cast和reinterpret_cast
static_cast该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法: ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。 进行上行转换(把派生类的指针或引用转换成基类表示)是安全的; 进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。 ②用于基本数据类型之间...原创 2018-03-22 09:18:02 · 327 阅读 · 2 评论 -
【c++】typedef、using和define(未完)
【一】类型别名(未完)typedef:为类型重新取一个名字,可以简化类型名书写,下面一个例子将看到typedef的好处。 先定义一个结构:struct my_struct{int a;string str;};定义一个结构变量并使用它:int main(){struct my_struct my;my.a=9;my.str="hello";}...原创 2017-05-31 21:41:51 · 323 阅读 · 0 评论 -
【c++】泛型编程之函数模板
1、什么是函数模板泛型编程是为了实现代码重用,函数模板是一种常用的方法。 数据类型也可以通过参数来传递,在函数定义时可以不指明具体的数据类型,当发生函数调用时,编译器可以根据传入的参数自动确定数据类型。这就是数据类型参数化,有了数据类型参数化,可以将函数进一步抽象为函数模板。 函数模板不是一个实在的函数,编译器不能为其生成可执行代码。定义函数模板后只是一个对函数功能框架的描述,当它具体执行...原创 2017-06-12 21:14:53 · 418 阅读 · 0 评论 -
【C++】相对路径与绝对路径以及斜杠与反斜杠的区别
本文来自:链接 正斜杠,又称左斜杠,符号是”/”;反斜杠,也称右斜杠,符号是”\”。文件路径的表示可以分为绝对路径和相对路径: 1、绝对路径表示相对容易,例如 pDummyFile =fopen(“D:\vctest\glTexture\texture\dummy.bmp”, “rb”)给出了从盘符开始的全部路径,这里需要注意的是“\”要用双斜线”\”,vc工程默认访问的目录是工...原创 2017-06-16 10:00:25 · 400 阅读 · 0 评论 -
【c++】结构体的字节对齐问题
要求数据内存的起始地址的值是某个数k的倍数,这就是所谓的内存对齐,本文就来深入剖析C++中的struct结构体字节对齐,需要的朋友可以参考下1.什么是字节对齐,为什么要对齐?现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而...转载 2017-07-04 23:12:46 · 539 阅读 · 0 评论 -
【c++】unordered_set和unordered_map
unordered_set unordered_map转载 2017-12-13 09:56:12 · 598 阅读 · 0 评论 -
【c++】stl顺序容器
STL提供了以下几种顺序容器: 除array外,其他顺序容器都提供高效灵活的自动内存管理。 forward_list和array是c++11新增的容器类型,array比内置的数组类型更安全和方便。 除非有更好的选择,否则vector将是你最好的选择(c++ primer)。顺序容器类型别名:构造函数:原创 2017-09-08 15:06:06 · 289 阅读 · 0 评论 -
【c++基础】9.类和对象——类的实现2
4.拷贝构造函数深拷贝与浅拷贝 当类的数据成员中没有指针时,使用浅拷贝完全没有问题,但如果有,使用浅拷贝时,只会将该指针拷贝出去,而不会另外开辟空间,即两个对象使用了同一块空间,这就很扯淡了。深拷贝就是在需要复制的地方重新开辟空间。 如果没有显式写出编译器会自动加上一个默认的,但是浅拷贝,因此如果数据成员有指针的话需要自定义拷贝构造函数。 调用拷贝构造函数的三种情况: 函数以传值方式传递对象原创 2017-07-03 11:10:46 · 266 阅读 · 0 评论 -
【c++基础】5.标识符、关键字、函数
【一】标识符标识符是实体唯一标识,也就是实体名,比如变量名,函数名,类名,结构名等,都是标识符,标识符由用户(编程人员)自己定义,遵循一定的规则命名规则,具体如下: 第一个字符必须是字母(不分大小写)或下划线(_); 后跟字母、下划线、或数字; 标识符对大小写敏感; 不能与c++保留字(即关键字)同名;以上是c++命名必须遵循的名字规则,只要满足以上规则都是合法的标识符,原创 2017-06-08 16:18:02 · 2372 阅读 · 0 评论 -
【c++基础】7.类和对象——面向对象的理解
【一】面向对象在学习类和对象之前,我觉得很有必要将先了解一下面向对象,因为类和对象的关系是面向对象的一种方式,所以先了解了面向对象,再去学习类和对象,这样带着需求去学习的效果会好一点,我一开始学习c++的时候就是直接就学习类和对象,当时还不知道面向对象的思想,编程都只会面向过程,以致于很长一段时间我觉得c++中的类就是多余的,用几个简单的函数就能高效完成的事情,为什么要很多心思去设计一个类呢?这也许原创 2017-06-13 11:51:16 · 432 阅读 · 0 评论 -
c++学习笔记(五)——字符串
字符串1.C语言字符串1.1表示形式1.1.1字符字符用单引号包含,实际上代表一个整数,整数值就是这个字符的ASCII值大小,如‘a’跟97(十进制)的含义是严格一致的,甚至可以互换。char ch=’a’;printf(“%c”,a);1.1.2字符串头文件#include 双引号括起来的字符,实际代表一个指向无名数组起始字符的指针,这个无名数组被双引号之间的原创 2016-12-03 13:49:39 · 524 阅读 · 0 评论 -
C++学习笔记(六)——文件操作
参考博文:http://www.cnblogs.com/likebeta/archive/2012/06/16/2551662.html1.申明文件流与打开关闭文件:c++中,文件被抽象为一个流,有相应的文件流类与之对应。包含头文件,以下声明一个文件流:ifstream file; //文件打开用于从文件输入到内存ofstream file; //文件打开用于从内存输出到文件原创 2016-12-11 19:59:12 · 961 阅读 · 0 评论 -
【c++基础】8.类和对象——类的实现1
类的实现,类的构造函数,初始化数据,类的数据成员和函数成员原创 2017-06-13 11:54:02 · 334 阅读 · 0 评论 -
【c++】use vector
#include <iostream>#include <vector>#include <string>using namespace std;int main(){ //vector的定义和初始化 cout << "\n定义和初始化vector:--------->" << endl; vector<int> v1;//定义一个空的vector,执行默认初始化原创 2017-09-15 10:25:13 · 351 阅读 · 0 评论 -
【c++基础】6.内存机制、指针、引用、动态数组及实例
本章从c++的内存机制入手,首先介绍堆栈等内存机制,然后介绍指针、引用这两种核心的地址操作手段,最后介绍数组以及动态数组,在学习数组这种用户自定义类型的同时,加深对指针和内存机制的了解。【一】内存机制1、内存的概念内存可以将其简单理解为一个存数据的容器,内存中的数据在计算机关闭是将被清空。计算机中的内存一般是按照字节编址的,即一字节一地址,现在(2017-6)计算机的内存已经很大了,pc机最少也有4原创 2017-06-09 09:57:43 · 697 阅读 · 0 评论 -
【c++基础】4.程序控制结构概述
【一】语句级控制结构语句级控制结构是控制语句执行顺序的机制。语句就是以分号分隔的一个个执行句子。1.顺序结构顺序结构是最基本也是最简单的语句级控制结构,也就是语句按顺序执行。c++中语句是以分号分隔开的。2.分支结构c++中分支结构有两种实现方式,分别是if和switch语句。 if语句又有多种形式,如下://第一种,当满足条件时执行语句,不满足则跳过if(expression){//exec原创 2017-06-02 16:14:30 · 439 阅读 · 0 评论 -
【c++基础】3.注释、头文件、名字空间
【一】注释注释是为我们写的代码添加批注的一种方法,无论代码是给别人看,还是给以后的自己看,写注释都是一种好习惯,有助于提高代码的可读性,注释在编译的时候并不会被包含到程序中,c++中注释的方法有两种:单行注释: 用“//”进行单行注释,每一行第一个“//”后面的内容将别注释掉,如:int stu_num=9;//***///stu_num表示学生数量,初始化为9***多行注释: 使用“/*注释内原创 2017-05-31 22:01:33 · 732 阅读 · 0 评论 -
【c++基础】2.数据类型、类型转换、变量
c++变量,数据类型,内置数据类型,自定义数据类型,类型转换,常量,引用,指针简介原创 2017-05-30 23:38:01 · 1005 阅读 · 0 评论