![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++笔记
文章平均质量分 72
Love coldplay
正在努力学习数据结构与算法!
展开
-
C++11_lambda函数实例
注意:参数列表(): 和普通函数的参数列表一样,如果没有参数参数列表可以省略这个小括号不写。参数列表(): 和普通函数的参数列表一样,如果没有参数参数列表可以省略这个小括号不写。返回值类型:在C++11中,lambda表达式的返回值是通过返回值后置语法来定义的。是C++11最重要也是最常用的特性之一,这是现代编程语言的一个特点,函数体:函数的实现,这部分不能省略,但函数体可以为空。定义了一个匿名函数,并且可以捕获一定范围内的变量。捕获列表[]: 捕获一定范围内的变量。的语法形式简单归纳如下。原创 2023-10-09 15:40:52 · 73 阅读 · 0 评论 -
C++并发与多线程C++如何线程创建线程以及函数join()和detach()用法和区别
通常一个程序运行起来,也就等于一个进程在运行,这个进程中会有一个主线程自动创建并运行,当程序的main()函数返回之后那么此主线程也就运行结束,也意味着进程运行结束。主线程是从main()函数开始运行,原创 2023-10-09 10:01:01 · 284 阅读 · 0 评论 -
C++11 Thread线程库的使用
传统的C++(C++11标准之前)中并没有引入线程这个概念,在C++11出来之前,如果我们想要在C++中实现多线程,需要借助操作系统平台提供的API,比如Linux的,或者windows下的 。本文详细介绍C++11 线程库的基本使用,包括如何创建线程、启动线程、等待线程完成、如何分离线程。原创 2023-10-07 22:42:47 · 168 阅读 · 0 评论 -
理解C++四种强制类型转换static_cast、const_cast、reinterpret_cast和dynamic_cast
强制类型转换是有一定风险的,有的转换并不一定安全,如把转换成,把转换成,把转换成,把转换成等。C语言强制类型转换缺点:主要是为了克服C语言强制类型转换的以下三个缺点。例如,将int 强制转换成 double 是没有风险的,而将常量指针转换成非常量指针,将基类指针转换成派生类指针都是高风险的,而且后两者带来的风险不同(即可能引发不同种类的错误),C语言的强制类型转换形式对这些不同并不加以区分。原创 2023-10-06 21:05:07 · 541 阅读 · 0 评论 -
理解C/C++中的链接
C++是一种高效而强大的编程语言,常用于系统级编程、游戏开发、科学计算等领域。在编写C++程序时,一个重要的问题是如何处理链接。链接是将多个独立编译的源文件组合成一个可执行文件的过程,它涉及到符号解析、重定位等复杂的技术。本文将深入介绍C++中的链接,包括链接的类型、链接器的作用、静态链接和动态链接的区别,以及如何使用C++的命名空间、模板和内联函数等特性来优化链接。原创 2023-10-06 20:49:33 · 897 阅读 · 0 评论 -
深入理解 C++ 中的 extern 关键字
在 C++ 语言中,extern 关键字经常被用于声明一个变量或函数。虽然它的用法相对简单,但为了编写出清晰、高效的代码,我们需要更深入地了解其内在含义和用法。本文将全面解析 extern 关键字的用途和使用场景。原创 2023-10-06 20:44:43 · 127 阅读 · 0 评论 -
string和const char*参数类型选择的合理性对比
在编程中,我们经常需要处理字符串类型的参数。在C++中,有两种常见的表示字符串的参数类型,即string和const char*。本文将对比这两种参数类型的特点,分析其在不同情况下的合理性,以便程序员能够根据实际需求做出正确的选择。原创 2023-10-06 20:10:47 · 197 阅读 · 0 评论 -
C语言实现malloc与free函数完成内存管理
在C语言中,malloc和free是用于动态内存管理的函数。(1)malloc函数malloc函数用于在堆(heap)中分配指定大小的内存空间,并返回一个指向该内存块的指针。size参数表示要分配的内存块的大小,以字节为单位。函数返回一个指向分配内存块的指针,如果分配失败,则返回NULL。使用场景:动态分配内存,例如在程序运行时根据需要创建数据结构。为字符串、数组、结构体等动态分配内存空间。(2)free函数free函数用于释放之前通过malloc或calloc函数动态分配的内存空间。原创 2023-10-02 22:51:41 · 281 阅读 · 0 评论 -
回调函数的用途
函数指针常量 :Max;函数指针变量:p;数名调用如果都得如(*myFun)(10)这样,那书写与读起来都是不方便和不习惯的。所以C语言的设计者们才会设计成又可允许myFun(10)这种形式地调用(这样方便多了,并与数学中的函数形式一样)。函数指针变量也可以存入一个数组内。数组的声明方法:int (*fArray[10]) ( int );我们先来看看百度百科是如何定义回调函数的:回调函数就是一个通过函数指针调用的函数。原创 2023-09-29 16:45:01 · 102 阅读 · 0 评论 -
归并(merge)排序
归并(merge)排序也是采用分而治之的思想,其采用二分法将待排列数组分成若干个子数组。然后将相邻的子数组进行归并成新的有序子数组,然后在新的子数组的基础上在进行归并成新的有序数组,直至归并成一个整体有序的数组。算法思想归并排序的最基本思想就是将一个数组拆分成两个数组,然后对每个子数组进行排序,然后将两个有序子数组归并成一个有序的数组。归并排序算法大致可以分为两步,如下图所示:分解(Split)如果数组的长度为1,则认为这个数组已经有序,直接返回即可。原创 2023-09-28 10:04:42 · 113 阅读 · 0 评论 -
C++多态案例3----组装电脑含测试代码
案例描述: 1. 电脑主要组成部件为 CPU (用于计算) ,显卡 (用于显示) ,内存条 (用于存储) 2. 将每个零件封装出抽象基类,并且提供不同的厂商生产不同的零件,例如Intel厂商和Lenovo厂商 3. 创建电脑类提供让电脑工作的函数,并且调用每个警件工作的接口 4. 测试时组装三台不同的电脑进行工作原创 2023-09-04 21:46:51 · 139 阅读 · 0 评论 -
C++多态案例3---电脑组装
案例描述:程序设计伪代码。原创 2023-09-04 17:25:45 · 104 阅读 · 0 评论 -
C++多态案例2----制作饮品
【代码】C++多态案例2----制作饮品。原创 2023-09-04 15:27:26 · 1059 阅读 · 0 评论 -
C++多态案例-设计计算器类
多态是面向对象的三大特性之一多态分为两类静态多态和动态多态的区别动态多态必须满足的条件。原创 2023-09-04 09:30:02 · 929 阅读 · 0 评论 -
C++野指针
野指针就是指针指向的不是一个**有效(合法)**的地址。在程序中,如果访问野指针,可能会造成程序的崩溃。原创 2023-05-28 17:40:04 · 226 阅读 · 0 评论 -
C/C++中 extern用法
声明用来告诉编译器变量的名称和类型,而不分配内存,不赋初值。定义为了给变量分配内存,可以为变量赋初值。注:定义要为变量分配内存空间;而声明不需要为变量分配内存空间。原创 2022-09-05 22:43:47 · 16688 阅读 · 1 评论 -
VS2017快捷键
可以在“工具->选项->文本编辑器->C/C+±>制表符”选项卡中设置缩进选项。在Tools->Options->Text Editor->C/C+±>General中可以设置是否显示行号。英文版本的路径为:Tools->Options->Text Editor->C/C+±>TabsVS2017常用快捷键VS中代码对齐等快捷键在VS中,选定代码后,按Ctrl+K+F组合键,可以自动进行代码对齐。注意:要先按下Ctrl和K不松手,再按下F,因为Ctrl+F是查找的快捷键。原创 2022-09-03 10:47:06 · 1952 阅读 · 0 评论 -
stpcpy和stpncpy用法 strcpy和strncpy用法
stpcpy()和stpncpy()用法 strcpy()和strncpy()用法 strcpy()和strncpy()返回复制之后的起始地址stpcpy()和stpncpy()返回复制之后的末尾地址原创 2022-08-17 18:17:55 · 1235 阅读 · 0 评论 -
C++笔记 学习预处理 学习宏定义
1、 # 预处理指令//指令用途 # 空指令,无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,则编译下面代码 #ifdef 如果宏已经定义,则编译下面代码 #ifndef 如果宏没有定义,则编译下面代码 #elif 如果前#if条件不为真,当前条件为真,则编译下面代码,其实就是else if的简写 #endif 结束一个#if……#e...原创 2022-04-03 23:06:08 · 910 阅读 · 0 评论 -
C++笔记 二维数组作为函数的参数详解 三种传参的方法总结 注意要点总结
//二维数组作为函数的参数,一般只有三种写法//void array_print(int array[2][2])////函数的参数声明必须指明数组的列数,数组的行数没有太大关系,因为函数调用时传递的是一个指针,它指向由行向量构成的一维数组//void array_print(int array[][2])////这种形式的函数参数是一个指针,它指向具有两个元素的一维数组//void array_print(int(*array)[2])原创 2022-08-17 11:34:03 · 21822 阅读 · 2 评论 -
C语言 总结const的用法
3 总结通过这篇博客,我对const修饰变量、数组、指着和函数参数进行了归纳总结。总体来说有几个点需要注意:const修饰变量,不能被直接修改const修饰指针指向的内容时(const int * p=&a),指针指向内容(*p)不能被修改,但指针本身§可以被修改。const修饰指针本身时(int * const p =&a),指针指向的内容(*p)可以被修改,但是指针本身(p)不能被修改。const 修饰字符串 (const *p=“abcd”;)和(const p[]=“abcd”;..........原创 2022-08-15 17:34:52 · 4345 阅读 · 0 评论 -
C++ 无法从“const char [ ]”转换为“char *”
高版本VS中(VS2017 ,VS2019)此语句带来的问题,对于新标准来说,这是不允许的。解决方法,按如下进行修改:1:在项目属性中 ,把符合模式更改为 ‘否’3:使用数组首地址赋值指针具体原原因 个人理解 C++ 语法检测很严格 ,赋值或初始化类型必须一致,看下面代码输出:变量类型都不一致 ,所以要设定兼容性或者 强制转换。......原创 2022-08-15 11:35:44 · 5667 阅读 · 7 评论 -
C++笔记 10个评委打分,去掉一个最低分和一个最高分,输出平均分 采用C++实现,评委打分采用随机数。生成60-100的随机整数
采用C++实现,评委打分采用随机数。生成60-100的随机整数。有五名选手 选手 A B C D E ,去掉一个最高分,去掉一个最低分,取平均分。10个评委分别对每一名选手进行打分,原创 2022-03-18 09:56:40 · 7401 阅读 · 0 评论 -
如何读写txt文件 C++读和写txt文件操作 查找文件中存储的字符串中逗号的位置
在对文件进行读写操作之前,先要打开文件。打开文件有以下两个目的:- 通过指定文件名,建立起文件和文件流对象的关联,以后要对文件进行操作时,就可以通过与之关联的流对象来进行。- 指明文件的使用方式。使用方式有只读、只写、既读又写、在文件末尾添加数据、以文本方式使用、以二进制方式使用等多种。...............原创 2022-08-13 09:31:39 · 5677 阅读 · 0 评论 -
如何生成lib文件 采用VS2017生成lib文件(静态库文件)以C++语言为例 静态库的生成和使用
打开VS2017,文件->新建->项目,选择“空项目”(下一步是具体的选择你的项目是什么类型,即使退一万步说你现在选错了,后面仍然可以更改,这个后面补充说明)首先在解决方案中的下添加一个头文件LibDemo1.h,在源文件下添加一个源文件LibDemo1.cpp.由于建立的项目是空项目,所以要在项目属性页----->配置类型----->.lib需要注意配置的是Debug还是Release,还有平台x64还是其他什么的我这里采用的如图所示。.........原创 2022-08-08 20:30:14 · 5625 阅读 · 0 评论 -
C++笔记 函数形式参数的三种传递方式 一维数组、结构体、结构体数组作为函数参数 typedef关键字与结构体、结构体指针的定义 附C语言常见运算符优先级
传值与传址《C和指针》函数的参数一节(7.3节)指出,C函数的所有参数均以“传值调用”方式进行传递,这意味着函数将获得参数值的一份拷贝。这样函数可以放心地修改这个拷贝值,而不必担心会修改调用程序实际传递给它的参数。.........原创 2022-08-02 21:45:28 · 7049 阅读 · 7 评论 -
VS如何将核心函数封装成dll、lib,并供给第三方调用?
1)在原项目中新建两个文件夹「include」和「lib」,其中「include」中存放上述第二步中编写的「VisionIMAX.h」文件,「lib」中存放上述第二步中生成的dll和lib文件。A客户需要小明实现这样一个功能利用QT实现两个整数加法求和的操作,不需要加法求和的具体实现,也就是不需要源码,只需要能给他dll,他们直接调用它进行加法操作即可。今天呢,简单地以一个小例子,来介绍一下我自己是如何生成dll的,如有不到位的地方,还请大家留言指正,不甚感激。那么他具体是如何实施的呢?......原创 2022-08-01 22:58:45 · 1283 阅读 · 0 评论 -
C笔记 C指针 指针对于C来说太重要。全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识。所以本文尽可能的通过一篇文章完全讲解指针。
指针对于C来说太重要。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识。所以本文尽可能的通过一篇文章完全讲解指针。指针解决了一些编程中基本的问题。第一,指针的使用使得不同区域的代码可以轻易的共享内存数据。当然小伙伴们也可以通过数据的复制达到相同的效果,但是这样往往效率不太好。因为诸如结构体等大型数据,占用的字节数多,复制很消耗性能。(根据平台不同,有4字节或者8字节或者其他可能)。............原创 2022-07-20 11:15:31 · 563 阅读 · 0 评论 -
C++笔记 蒙特卡罗计算π值
蒙特卡罗蒙特卡罗(Monte Carlo)方法也称统计模拟方法,是按抽样调查法求取统计值来推定未知特性量的计算方法。又称随机抽样或统计试验方法。当所求解的问题是某种事件出现的概率,或某随机变量的期望值时,可以通过某种“试验”方法求解。monte carlo可以用来应用到很多领域,比如求积分,求圆周率π值的计算构造一个单位正方形和一个单位圆的1/4,往整个区域内随机投入点,根据点到原点的距离判断点是落在1/4的圆内还是在圆外,从而根据落在两个不同区域的点的数目,求出两个落在两个区域点数量的比值原创 2022-05-24 16:07:49 · 1357 阅读 · 0 评论 -
C++ 浪漫烟花表白程序520表白 情人节表白 七夕节表白 有烟花爆炸音效 包含程序所需要的背景音乐和图片素材 并且文中附带有完整代码 附带安装程序 可用于520表白 情人节表白 七夕节表白
下载成功后,可得到一个烟花爆炸安装程序.exe,直接双击开始打开,来到安装引导界面。代表创建桌面快捷方式。,没有的需要自行安装。实现的动态烟花非常好看,自己做出来玩玩也挺有意思的。可在函数中修改,这样会出现一段用来表白的话,可根据自己需求修改。接下来点击install,最后点击finish。等待音乐放到特定地方会绽放烟花,会出现爱心形状。然后设置烟花有上升阶段和爆炸阶段,接下来可以欣赏浪漫烟花爆炸的样子。首先绘制菜单界面显示文字;C++实现的放烟花程序。烟花爆炸视频V2.0。......原创 2022-05-12 10:38:50 · 5544 阅读 · 7 评论 -
C++笔记 静态库和动态库详解
定义:运行时库 静态库 动态库运行时库:Unix中一个典型的运行时库例子就是libc,它包含标准的C函数,如,print(),exit()等等,用户能创建他们自己的运行库(在Windows中是DLL),而具体的细节依赖编译器和操作系统的。静态库:函数和数据被编译进一个二进制文件(通常扩展名为.lib),静态库实际上是在链接时被链接到EXE的,库本身不需要与可执行文件一起发行。动态库:用VC++创建的动态库包含两个文件,一个lib文件和一个dll文件,这个lib文件就是引入库,不是静态库,引入库有时原创 2022-04-10 17:08:40 · 1967 阅读 · 0 评论 -
C++笔记 指针函数与函数指针详解 一级函数指针和二级函数指针实例
指针函数 主体函数 需求:返回类型为指针函数指针 主体指针 需求:指针指向一个具体函数1、()优先级 大于 * 星号,首先是一个函数,返回一个指针 ,指针变量类型为 int*int *f(int x,int y) 首先是一个函数,返回一个指针2、函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针int (*f)(int x,int y) 首先f是一个指针,然后指向一个具体函数函数指针 计算流程,函数指针指向要计算的目标函数,再用*取出目标......原创 2022-04-08 09:45:00 · 1068 阅读 · 0 评论 -
C++笔记 指针函数与函数指针详解
指针函数,从名字上看它本质上是一个函数。指针函数:返回值类型是指针的函数。函数声明如下:int *plusfunction(int a,int b);当然也可以写成如下格式:int* plusfunction(int a,int b);让指针标志 * 与int紧贴在一起,而与函数名f间隔开,这样看起来就明了些了,plusfunction是函数名,返回值类型是一个int类型的指针。指针函数就是一个普通的函数,普通到仅仅是因为它的函数返回值是指针而已。//指针函数,从名..原创 2022-04-07 21:39:39 · 4825 阅读 · 1 评论 -
C++笔记 指针与数组 指针数组与数组指针
指针:C语言中某种数据类型的数据存储的内存地址,例如:指向各种整型的指针或者指向某个结构体的指针。数组:若干个相同C语言数据类型的元素在连续内存中储存的一种形态。数组在编译时就已经被确定下来,而指针直到运行时才能被真正的确定到底指向何方。所以数组的这些身份(内存)一旦确定下来就不能轻易的改变了,它们(内存)会伴随数组一生;而指针则有很多的选择,在其一生他可以选择不同的生活方式,比如一个字符指针可以指向单个字符同时也可代表多个字符等。指针和数组在C语言中使用频率是很高的,在极个别情况下,数组和原创 2022-04-07 21:08:15 · 2052 阅读 · 0 评论 -
C++笔记 友元函数 友元类
友元函数:友元函数是可以直接访问类的私有成员的非成员函数。 它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下: friend 类型 函数名(形式参数)1、为什么要使用友元函数1.1 出现背景在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了使其他类的成员函数直接访问该类的...原创 2022-04-06 23:06:53 · 1922 阅读 · 0 评论