![](https://img-blog.csdnimg.cn/direct/a8c862b72f084cb28da5bd19ebe403ee.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C\Cpp
文章平均质量分 88
学习c\cpp
木心
I seek not to know the answer, but to understand the questions.
欢迎访问我的个人Blog-->
https://shenmuxin.github.io
展开
-
C/C++前置声明
C语言中,结构体类型在声明之后,未正式定义之前是一个不完全类型(incomplete type),即只知道其是一个类型,但不知道包含哪些成员。不完全类型只能用于定义指向该类型的指针,或声明使用该类型作为形参指针类型或返回指针类型的函数。需要注意的是,在使用前置声明的时候,我们只能定义为指针,因为前置声明只是告诉编译器有这种类型,并没有给出具体的定义,所以当我们进行实例化的时候,需要为其分配内存空间,由于还不知道类型大小,这样一样会报错,使用指针就能避免这个问题。的完整定义,这样编译器会报错,因为。原创 2024-08-21 10:19:29 · 338 阅读 · 0 评论 -
【Cpp筑基】五、类的继承、虚函数、抽象基类
Cpp系列笔记目录。原创 2024-08-10 16:33:20 · 1030 阅读 · 0 评论 -
【Cpp筑基】四、重载运算符、友元、类的转换函数
【Cpp筑基】一、内联函数、引用变量、函数重载、函数模板【Cpp筑基】二、声明 vs 定义、头文件、存储持续性作用域和链接性、名称空间【Cpp筑基】三、对象和类【Cpp筑基】四、重载运算符、友元、类的转换函数在C++中,运算符重载(operator overloading)允许开发者定义或重新定义标准运算符的行为,使其可以用于自定义类型(例如类)。通过运算符重载,可以让用户定义的类型与内置类型一样自然地进行运算操作,提高代码的可读性和易用性。运算符重载是在C++中提供的一种特性,允许为用户定义的类型(原创 2024-08-08 09:55:39 · 193 阅读 · 0 评论 -
【Cpp筑基】三、对象和类
内联函数是一种建议编译器在每次调用该函数时,将其代码插入到调用点处,而不是进行常规的函数调用。这可以减少函数调用的开销,提高程序执行效率,尤其是对于短小的函数。原创 2024-08-07 15:00:23 · 917 阅读 · 0 评论 -
【Cpp筑基】二、声明 vs 定义、头文件、存储持续性作用域和链接性、名称空间
什么是声明?什么是定义?在C++中,声明(Declaration)和定义(Definition)是两个重要的概念,它们在程序的组织和编译过程中起着不同的作用。声明是告诉编译器某个变量、函数、类或者其他标识符的名称及其类型,但不包含具体的实现或者初始化,声明的主要目的是让编译器知道这些标识符的存在及类型。声明(Declaration):告诉编译器某个变量的名字和类型,但不分配存储空间(除非它也是一个定义)。定义(Definition):不仅告诉编译器变量的名字和类型,还分配存储空间。变量声明。原创 2024-08-06 15:48:27 · 1029 阅读 · 0 评论 -
【Cpp筑基】一、内联函数、引用变量、函数重载、函数模板
左值(lvalue,locatable value)是指能够定位的值,它表示存储在内存中的某个位置的对象。因此,左值是可以取地址的,可以出现在赋值操作的左侧。右值(rvalue,readable value)是指不具有持久存储位置的临时值,它通常是表达式求值的结果。,如果两个函数的参数数目和类型相同,同时参数的排列顺序也相同,则它们的特征标相同,而变量名是不重要的。C++提供了一种内联函数,在 C++ 中,内联函数(inline function)是一种特殊的函数,其定义使用。例如,创建一个引用变量。原创 2024-08-06 10:27:19 · 934 阅读 · 0 评论 -
C++中的智能指针
笔者在学习ROS2的过程中,遇到了这种用法,一眼看不懂,才发现笔者对于。原创 2024-04-23 17:50:28 · 761 阅读 · 0 评论 -
C++中的Lambda匿名函数
可以使用隐式捕获模式,然后为特定的变量显示指出相反的模式。例如,lambda主体需要通过引用的方式访问外部变量。初始化捕获是使用初始化列表来捕获外部变量,可以用于按值捕获或者按引用捕获。则表示只是定义了一个 Lambda 函数,并不会立即执行。表示 lambda 表达式的主体不需要访问封闭范围内中的变量。可以立即执行 Lambda 函数,并返回函数的结果。表示通过引用的方式来捕获引用的所有变量,而。值捕获需要手动来指定,例如有一个变量。,然后执行匿名函数的函数体,执行结果。,并通过值访问外部变量。原创 2024-04-22 15:24:43 · 549 阅读 · 0 评论 -
【Cpp巩固】引用与指针
笔者在学习Cpp的过程中老是会对指针和引用使用产生疑问,那本文就来详细对比一下指针和引用的区别。原创 2024-04-14 15:51:28 · 410 阅读 · 0 评论 -
C++ STL简明教程
std::vector 变量名;可以是各种类型,也同样可以是STL容器,举个例子,//这里定义了一个二维的向量可以像普通类型一样进行定义std::mapstd::map 变量名;//使用string需要先#include 使用构造函数进行初始化使用初始化器{}来初始化使用make_pair函数进行初始化// 使用auto自动推断构建后的类型setstd::set 变量名;原创 2024-03-27 22:18:47 · 978 阅读 · 0 评论 -
Window系统下Vscode配置C/Cpp运行+调试环境
配置了Cpp的运行环境,我们是无法进行单步调试运行的,这时就需要配置Cpp的调试环境了,在。打开Vscode,我们新建一个目录用于专门存放我们的。文件主要负责我们的调试过程,我们需要配置这两个文件。接下来我们就能测试一下是否配置成功了,新建一个。下载完毕后,需要进行解压,然后配置环境变量。,请大家举一反三,合理配置自己的路径。,将你的存放路径拷贝过来,我的路径即是。配置完毕后,你的文件目录中会出现一个。如果出现下列内容,则表明配置成功。配置到环境变量中,完整的路径是。,我们需要将其中子文件夹的。原创 2024-03-13 16:59:07 · 898 阅读 · 0 评论 -
Python中sys.argv[ ]与Cpp中int main(int argc char *argv[ ])的用法
最近在学习ROS,在服务通信中老是遇到这两种用法,在以前系统学习Python和Cpp的时候,遗忘了这一知识点,现在进行补票。原创 2023-02-27 11:28:46 · 606 阅读 · 0 评论 -
初识Cpp之 九、模板和STL
Cpp中另一种编程思想称为泛型编程,主要利用的技术是模板,Cpp提供两种模板机制函数模板和类模板。模板就是建立通用的模具,大大提高程序的复用性。 函数模板是通用的函数描述,函数模板使用泛型来定义函数,其中的泛型可用具体的类型(如double和int)替换。通过将类型作为参数传递给模板,可使编译器生成该类型的函数。这种方式也被称为通用编程。创建函数模板需要使用关键字==和关键字==。 函数模板的作用是,建立一个通用函数,其函数返回值类型和形参类型可以不具体指定,用一个虚拟的类型来表示。模板的创建语法:原创 2022-09-04 10:36:20 · 936 阅读 · 0 评论 -
初始Cpp之 八、类和对象
C++面向对象的三大特性:封装、继承和多态。 封装的意义在于:基本语法:或者实例化,通过类创建类的实例语法:,可以通过==成员访问符==来访问类中的属性和方法。示例: 封装的权限设置:类在设计时,可以把属性和方法放在不同的权限下加以控制。访问权限有三种: 在C++中,和的区别:唯一的区别在于默认的访问权限不同,默认的访问权限;而默认访问权限为。 将类的成员属性设置为私有:举个例子:(2)对象的初始化和清理 对象的初始化和清理是两个非常重要的安全问题,一个对象或者变量没有初始状态,对其使用原创 2022-09-04 10:20:39 · 875 阅读 · 0 评论 -
初识Cpp之 七、流程控制
该常量等于每秒钟包含的系统时间单位数,因此用系统时间除以这个值,可以得到秒数。 C++11新增了一种循环:基于范围(range-based)的。这简化了一种常见的循环任务:对数组(或容器类,如。本节介绍Cpp相比于C语言特有的一些流程控制的方式。中,这个函数返回程序开始执行后所用的系统时间。若需要对数组进行修改,那么需要使用引用变量,符号。 利用系统时钟来编写演示循环,系统时钟函数。)的每个元素执行相同的操作。的返回值类型都不一样,在。中将其返回值类型定义为。原创 2022-09-04 10:11:23 · 358 阅读 · 0 评论 -
初识Cpp之 六、内存分配
进行内存分配的空间(不要尝试释放已经释放的内存块,这样做的结果是未定义的)。来进行内存分配和回收,在C++中仍然可以这样做,但是C++还有更好的方法——将找到一个长度正确的内存块,然后会返回该内存块的地址。2、堆区主要用C++的new关键字来开辟空间和释放空间。 C++程序在执行的时候,将内存大致分为4个区域。 在C语言中使用的是一套内存分配库函数。当没有足够的内存空间来进行分配的时候,:只要将数组的元素类型和元素数目告诉。创建的数组,应该使用另一种格式的。分配的内存块时,应该使用。原创 2022-09-03 17:30:28 · 476 阅读 · 0 评论 -
初识Cpp之 五、函数
只需要向函数原型提供默认参数,而函数的定义与没有默认参数的时候完全相同。如果没有指定函数的原型而是直接进行函数的定义,那么在没有函数原型的时候直接在函数定义中添加默认参数。原创 2022-09-03 17:28:02 · 996 阅读 · 0 评论 -
初识Cpp之 四、数据类型
结构体是C++的OOP基础,结构体是用户定义的类型,而结构声明定义了这种类型的数据熟悉,定义了类型后,便可以创建这种类型的变量。函数来进行字符串的比较,详见C语言。 C++将大括号初始化器作为一种通用的初始化方式,可用于所有类型,同样这种方式可以适用于数组,并且可以省略。 因此,在C++中有两种风格的字符串,一种是延续了C语言风格的字符串,另一种是C++风格的字符串。函数,使用这种方式,需要时刻注意不能超过数组的容量,否则会出错。 结构体的声明,结构体的声明和定义结构体变量可以组合成一个步骤。原创 2022-09-03 17:20:09 · 1444 阅读 · 1 评论 -
初识Cpp之 三、Cpp预处理器
C++和C语言一样,也使用一个预处理器,在程序进行主编译之前对源文件进行处理,有些C++实现使用翻译器程序将C++程序转化为C语言程序,虽然翻译器也是一种预处理器,但是这里不讨论这种预处理器。 名称空间支持是一项C++特性,旨在编写大型程序以及将多个厂商的现有代码组合起来的程序时更加容易,有助于组织程序。所包含的文件名,被称为头文件(header file),C++编译器自带了很多头文件,每个头文件都支持一些特定的工具。,但是C++的用法变了,C++对老式的C语言头文件保留了拓展名。原创 2022-09-03 17:15:49 · 564 阅读 · 0 评论 -
初识Cpp之 二、IO与文件
该函数由两个参数,第一个参数的用于存储输入行的数组的名称,第二个参数是要读取的字符数(比实际读取少1字符,用于存储空字符)。因为当我们需要写入一些非文本的内容的时候,二进制的方式便于我们进行操作。函数读取整行,它使用回车键输入的换行符来确定读取的结束。要调用这种方法,可以使用==,参数解释:字符指针buffer指向内存种一段存储空间,len是读写的字节数。,参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数。也是一个智能对象,它可以将输入转化为接受信息的变量能够接受的形式。原创 2022-09-03 17:13:35 · 404 阅读 · 0 评论 -
初识Cpp之 一、基础知识
C++融合了三种不同的编程方式:1、C语言代表的过程性语言,2、C++在C语言的基础上添加的类代表的面向对象语言,3、C++模板支持的泛型编程。使用C++的原因之一是为了利用其面向对象的特性。要利用这种特性,必须对标准C语言知识有较为深入的了解,因为它提供了基本类型、运算符、控制结构和语法规则。 面向对象编程(Object Oriented Programming, OOP)的诞生,试图让语言来满足问题的要求,其理念是设计与问题本质特性相对应的数据格式。原创 2022-09-03 17:10:27 · 2530 阅读 · 0 评论 -
C语言数据结构知识点小结(全)
C语言数据结构小结,B站青岛大学-王卓授课笔记原创 2022-07-14 16:05:22 · 39181 阅读 · 20 评论 -
C语言所有知识点小结
C语言所有知识点小结,适合查漏补缺。是笔者在学习《C Primier Plus》的过程中的笔记,希望和大家一起分享。原创 2022-06-21 17:25:54 · 1041 阅读 · 1 评论 -
C语言指针就该这样学(指针练习)
C语言指针就该这样学(指针练习)CatalogC语言指针就该这样学(指针练习)0x00 - 关于指针练习的重要总结0x01 - 指针练习第一部分0x011 - 第一个练习0x012 - 第二个练习0x013 - 第三个练习0x014 - 第四个练习0x015 - 第五个练习0x00 - 关于指针练习的重要总结数组名通常是指数组首元素的地址,但是有如下两个例外情况:1、当数组名放在运算符sizeof之中的时候,数组名表示整个数组,sizeof(arr)求取整个数组的大小。(在下文中简称情况一)2、原创 2022-05-25 17:10:16 · 427 阅读 · 0 评论