C++之入门一

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary_walk

      ⸝⋆   ━━━┓
     - 个性标签 - :来于“云”的“羽球人”。 Talk is cheap. Show me the code
┗━━━━━━━  ➴ ⷯ

本人座右铭 :   欲达高峰,必忍其痛;欲戴王冠,必承其重。

👑💎💎👑💎💎👑 
💎💎💎自💎💎💎
💎💎💎信💎💎💎
👑💎💎 💎💎👑    希望在看完我的此篇博客后可以对你有帮助哟

👑👑💎💎💎👑👑   此外,希望各位大佬们在看完后,可以互相支持,蟹蟹!
👑👑👑💎👑👑👑


 目录:

一:关键字

二:命名空间

三:C++输入和输出

四:缺省参数

五:函数重载

六:引用

七:内联函数

八:auto关键字(C++11)

九:基于范围的for循环(C++11)

十:指针空值:nullptr(C++)


 思维导图:

1:关键字

学过C语言应该对关键字这一个概念都不陌生吧,在C语言里面,有32个关键字,而我们的C++里面有63个关键字

以下是C++中的关键字,对于初期学习C++的小白而言(不如我),不太建议大家全部背下来,一个是不太理解,其次是容易忘记,所以建议大家可以在学习的过程边学边记

 

2:命名空间
2.1前言

在C中,自定义的变量……是不许和标准库里面重名的

具体见下:

1)

 2)

 这时候发生了冲突(命名冲突)

C++中用关键字:namespace来解决这个问题

 2.1命名空间的定义

namespace + 名字 +{ }

注意:{ }后面是没有分号的,不用于定义结构体

命名空间也是可以支持嵌套定义

2.2命名空间的使用

第一种方法:指定的命名空间的名字+域作用限定符(::)

第二种方法:使用using 将某个成员引入

第三种方法: 使用using namespace +名称 :来进行引入

 总的来说:对于日常的练习,可以进行全部展开:using namespace std ;

对于大型的项目工程,可以是部分展开(指定展开)

3:C++输入和输出

对于这两个运算符,姑且一笔带过

3.1 流插入运算符 <<

当我们想在输出设备(终端)进行打印的时候,就需要用到流插入运算符(注:endl 是换行的意思等价于C语言的 ‘\n’)

3.2流提取运算符>>

同理,有输出,自然就有输入

4:缺省参数
4.1概念
缺省参数是 声明或定义函数时 为函数的 参数指定一个缺省值 。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。
4.2分类以及使用

全缺省参数:调用函数的时候没有传任何的参数

半缺省参数:调用参数的时候有参数

 

注意:

1. 半缺省参数必须 从右往左依次 来给出,不能间隔着给
2. 缺省参数 不能在函数声明和定义中同时出现
5:函数重载
5.1概念
C++ 允许在 同一作用域中 声明几个功能类似 的同名函数 ,这 些同名函数的形参列表 ( 参数个数 或 类型 或 类型顺序 ) 不同 ,常用来处理实现 功能类似 数据类型不同的问题。
5.2使用
5.2.1:参数的类型不一样

 5.2.2参数的个数不同

5.2.3参数的顺序类型不一样

注意:

1)当重名函数的返回类型不一致的时候,是不支持函数重载的

2)函数重载并不影响运行的效率(在编译的阶段完成函数重载的)

3)C++支持函数重载的本质:编译器的底层逻辑,是通过对调用的函数名字进行修饰来明确调用哪一个函数 ,不同的编译器对函数名字修饰是不一样的。

6:引用
6.1概念
引用 不是新定义一个变量,而 是给已存在的变量取了一个别名 ,编译器不会为引用变量开辟内存空
间,它和它引用的变量 共用同一块内存空间。
6.2使用

类型+&+别名 = 实体

1)场景1

2)场景2 

 

3)场景3:做参数

 关于实参与形参的关系:形参是对实参的一份临时拷贝(内存的申请),对形参的临时修改不会影响实参的变化

当我们用引用来作为参数,减少了空间的开辟

4)场景4 :做返回值

总结:

 如果函数以引用返回并且出了函数作用域,对应的空间并没有归还给系统,那就可以以应用返回,比如:malloc,静态区的,上一层函数栈帧的……

其实在底层逻辑上,引用也是以指针方式来实现的

引用与指针对比:

1. 引用概念上定义一个变量的别名,指针存储一个变量地址。
2. 引用 在定义时 必须初始化 ,指针没有要求
3. 引用 在初始化时引用一个实体后,就 不能再引用其他实体 ,而指针可以在任何时候指向任何
一个同类型实体
4. 没有 NULL 引用 ,但有 NULL 指针
5. sizeof 中含义不同 引用 结果为 引用类型的大小 ,但 指针 始终是 地址空间所占字节个数 (32
位平台下占 4 个字节 )
6. 引用自加即引用的实体增加 1 ,指针自加即指针向后偏移一个类型的大小
7. 有多级指针,但是没有多级引用
8. 访问实体方式不同, 指针需要显式解引用,引用编译器自己处理
9. 引用比指针使用起来相对更安全

7:内联函数
inline 修饰 的函数叫做内联函数, 编译时 C++ 编译器会在 调用内联函数的地方展开 ,没有函数调 用建立栈帧的开销,内联函数提升程序运行的效率。

 

使用内联函数是以空间换时间,注意这个空间不是指的内存,编译器在编译链接的时候,目标文件会变大,使用内联函数最大的好处之一就是避免了函数栈帧的创建与销毁

对于编译器而言,这个内联函数是否展开取决于编译器,一般当函数规模较小(10行左右的代码),并且频繁调用的函数,编译器会展开

一般不要把内联函数的声明和定义分开,编译器会报错

内联函数解决了C语言的宏的不足之处

宏的优点与不足:

优点:代码复用性强;提高了性能

不足:可读性,可维护性较差;没有类型的检查;不便于调试

8:auto关键字(C++11)
作为一 个新的类型指示符来指示编译器, auto 声明的变量必须由编译器在编译时期推导而得 。(换言之就是可以自动识别变量的类型)

 

 

使用场景:

1)对引用和指针:

 

2). 在同一行定义多个变量
当在同一行声明多个变量时,必须保证所有变量都是同一种类型
使用auto 对应的变量必须进行 初始化

 auto 不能使用的场景:

1)不能出现在形参里面

2)不能用于数组

9:基于范围的for循环(C++11)

使用范围for  的条件:

1)要有结束和起始 的范围

2)迭代的对象要实现++==的操作

10:指针空值:nullptr(C++)

暂时以一个例子来引入:

相信有不少老铁会感到疑惑。

 

C++98 中,字面常量 0 既可以是一个整形数字,也可以是无类型的 指针(void*)常量 ,但是编译器 默认情况下将其看成是一个整形常量 ,如果要将其按照指针方式来使用,必须对其进行强转(void *)0。

 可以使用nullptr

1)在 C++11 中, sizeof(nullptr) sizeof((void*)0) 所占的字节数相同。
2)nullptr 不需要引入对应的头文件,直接使用即可

 结语:

以上就是我要share的内容。对于刚刚学习C++的小白而言自然会有点摸不到头脑,有时也会觉得为啥要这样写呢,有什么可以应用的场景吗,别急,这只是为后面的迭代器,类和对象……打基础呢,等到后期自然就觉得非常爽了,各位大佬要是觉得还不错的话,支持一下呗!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/466766.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网安渗透攻击作业(4)

Unload-labs-01 function checkFile() { var file document.getElementsByName(upload_file)[0].value; if (file null || file "") { alert("请选择要上传的文件!"); return false; } //定义允许上传的文件类型 v…

PHP反序列化--引用

一、引用的理解&#xff1a; 引用就是给予一个变量一个恒定的别名。 int a 10; int b &a; a 20; cout<<a<<b<<endl; 输出结果 : a20、b20 二、靶场复现&#xff1a; <?php highlight_file(__FILE__); error_reporting(0); include("flag.p…

10大漏洞评估和渗透测试工具【附安装包】

1、Netsparker Security Scanner 专为企业设计的强大的漏洞扫描和管理工具&#xff0c;它可以检测和利用 SQL 注入和 XSS 等漏洞。 https://www.netsparker.com/product/ 2、Acunetix Scanner 针对中小型企业的 Web 应用程序漏洞扫描程序&#xff0c;但也可以扩展到更大的组…

Jenkins实现CICD(3)_Jenkins连接到git

文章目录 1、如何完成上述操作&#xff0c;并且不报如下错&#xff1a;2、连接不上git&#xff0c;操作如下&#xff1a;3、将上边产生的3个文件拷贝到&#xff1a;C:\Windows\System32\config\systemprofile\.ssh4、新建下图凭证&#xff1a;创建步骤&#xff1a; 5、公钥填到…

搜索练习(地下城主,查找倍数)

地下城主 思路&#xff1a;这个其实就是bfs的板子&#xff0c;但是和以往的bfs不同&#xff0c;这个bfs适用于三维空间&#xff0c;也就是说多出一维需要进行搜索&#xff1a; 犯下的错误&#xff1a;在bfs的输出中我写成了cout<<q[tail].step1<<endl; 由于在之前…

机器人路径规划:基于流场寻路算法(Flow Field Pathfinding)的机器人路径规划(提供Python代码)

流场寻路算法(Flow Field Pathfinding)是一种基于流体动力学理论的路径规划算法&#xff0c;它模拟了流体在空间中的流动&#xff0c;并利用流体的运动特性来指导路径的选择。下面是流场寻路算法的基本介绍及算法描述&#xff1a; 1. 基本介绍 流场寻路算法通过将环境划分为网…

JWT原理

JWT 介绍 JWT&#xff08;JSON Web Token&#xff09;是一个开放标准&#xff08;RFC 7519&#xff09;&#xff0c;它定义了一种简洁的、自包含的方法用于通信双方之间以 JSON 对象的形式安全地传输信息。这种信息可以被验证和信任&#xff0c;因为它是数字签名的。JWT通常用于…

洛谷P1100 高低位交换

#先看题目 题目描述 给出一个小于 的非负整数。这个数可以用一个 32 位的二进制数表示&#xff08;不足 32 位用 0 补足&#xff09;。我们称这个二进制数的前 16 位为“高位”&#xff0c;后 16 位为“低位”。将它的高低位交换&#xff0c;我们可以得到一个新的数。试问这…

算法之前缀和

题目1: 【模板】一维前缀和&#xff08;easy&#xff09; 方法一: 暴力解法, 时间复杂度O(n*q), 当n10^5, q 10^5, 时间复杂度为O(10^10), 会超时. 方法二: 前缀和: 快速求出数组中某一段连续区间的和. 第一步: 预处理出来一个前缀和数组dp: 1. dp[i]表示区间[1,i]里所有元…

ConcurrentHashMap的相关介绍和使用

概述 ConcurrentHashMap是Java中提供的一个关于线程安全的哈希表实现&#xff0c;他是java.util.concurrent包的一部分&#xff0c;允许多个读操作并发进行&#xff0c;提高了并发环境下的性能。ConcurrentHashMap实现了ConcurrentMap接口&#xff0c;故而他也有ConcurrentMap…

2024.3.18

1、试编程 封装一个动物的基类&#xff0c;类中有私有成员:姓名&#xff0c;颜色&#xff0c;指针成员年纪再封装一个狗这样类&#xff0c;共有继承于动物类&#xff0c;自己拓展的私有成员有:指针成员:腿的个数(整型intcount)&#xff0c;共有成员函数:会叫:void speak() 要求…

ardupilot开发 --- 机载(边缘)计算机-VISP 篇

啊啊啊我的妻王氏宝钏 1. 一些概念 1. 一些概念 什么是VISP VISP即Visual servoing platform. Allows to control a robot equipped with a camera from measures extracted from the images.实现无人机飞行控制&#xff0c;机器人运动控制。实现实时目标检测。实现实时位姿估…

SpringCloud Sleuth 分布式请求链路跟踪

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第十篇&#xff0c;即介绍 Sleuth 分布式请求链路跟踪。 二、概述 2.1 出现的原因 在微服务框架中&…

什么是IoT物联网平台?

在数字化浪潮的席卷下&#xff0c;物联网&#xff08;IoT&#xff09;技术逐渐渗透到我们生活的方方面面&#xff0c;从智能家居到智慧城市&#xff0c;从工业自动化到智能农业&#xff0c;IoT正以其独特的魅力改变着世界。然而&#xff0c;当我们谈论IoT时&#xff0c;我们究竟…

maven一点通

1.maven简介 Maven是一个基于Java的工程构建工具&#xff0c;用于管理和构建项目的依赖关系。它提供了一种标准的项目结构和一组约定&#xff0c;使得项目的开发、构建、部署和文档化更加容易和可靠。 Maven的主要功能包括&#xff1a; 依赖管理&#xff1a;Maven可以自动下载…

elementui el-table表格自动循环滚动【超详细图解】

效果如图 1. 当表格内容超出时&#xff0c;自动滚动&#xff0c;滚动到最后一条之后在从头滚动。 2. 鼠标移入表格中&#xff0c;停止滚动&#xff1b;移出后&#xff0c;继续滚动。 直接贴代码 <template><div><div class"app-container"><e…

蓝桥杯前端Web赛道-输入搜索联想

蓝桥杯前端Web赛道-输入搜索联想 题目链接&#xff1a;1.输入搜索联想 - 蓝桥云课 (lanqiao.cn) 题目要求&#xff1a; 题目中还包含effect.gif 更详细的说明了需求 那么观察这道题需要做两件事情 把表头的每一个字母进行大写进行模糊查询 这里我们会用到几个js函数&#…

matlab FR共轭梯度法求解无约束问题

1、内容简介 略 75-可以交流、咨询、答疑 matlab FR共轭梯度法求解无约束问题 一维搜索 黄金搜索到单峰&#xff0c;单变量最小值 2、内容说明 略 Fletcher-Reeves共轭梯度法&#xff0c;简称FR法。 共轭梯度法的基本思想是把共轭性与最速下降方法相结合&#xff0c;利用…

rt-thread之通讯协议modbus软件包的使用记录(lwip+modbus组合)

前言 使用freemodbus软件包使用网口通讯(sallwip)ip地址使用dhcp动态获取 软件包 相关宏定义 /*-----------------------------------------NET 宏定义-------------------------------------------*/#define RT_USING_SAL #define SAL_INTERNET_CHECK /* Docking with prot…

mysqlcheck 数据完整性检查与修复

目录 mysqlcheck 命令文档 描述 选项 参数 示例 mysqlcheck 命令文档 mysqlcheck 是MySQL提供的一个工具&#xff0c;用于检查、修复、优化和分析数据库和表的健康状态。你可以使用它来确保数据库表的完整性和性能。 mysqlcheck [options] db_name [tbl_name ...]mysqlch…