2026《数据结构》考研复习笔记一(C++基础知识)
C++基础知识复习
- 一、数据类型
- 二、修饰符和运算符
- 三、Lambda函数和表达式
- 四、数学函数
- 五、字符串
- 六、结构体
一、数据类型
1.1基本类型
| 基本类型 | 描述 | 字节(位数) | 范围 |
|---|---|---|---|
| char | 字符类型,存储ASCLL字符 | 1(8位) | -128 到 127 或 0 到 255(依赖编辑器) |
| signed char | 有符号字符 | 1(8位) | -128 到 127 |
| unsigned char | 无符号字符 | 1(8位) | 0到255 |
| int | 整型 | 4(32位) | -2,147,483,648 到 2,147,483,647 |
| unsigned int | 无符号整型 | 4(32位) | 0 到 4,294,967,295 |
| float | 单精度浮点数 | 4(32位) | 约 ±3.4e±38(6-7 位有效数字) |
| double | 双精度浮点数 | 8(64位) | 约 ±1.7e±308(15 位有效数字) |
笔记:复习基本数据类型的取值范围和计算方法
【跳转复习总结】
1.2C++新增类型
| C++11新增类型 | 描述 | 示例 |
|---|---|---|
| auto | 让编辑器自动推断类型
| auto x=10; |
| decltype | 获取表达式的类型
| decltype(x) y=20; |
| initializer_list | 初始化列表类型
| initializer_list list = {1, 2, 3}; |
| tuple | 元组类型,存储多个不同类型的值 | tuple |
笔记:复习迭代器和Lambda表达式
【跳转复习总结】
1.3派生类型
| 派生类型 | 描述 | 示例 |
|---|---|---|
| 数组 | 相同类型元素的集合 | int arr[5]={1,2,3}; |
| 指针 | 存储变量内存地址的类型 | int* p=&x; |
| 引用 | ref和x指向同一块地址 | int & ref=x; |
| 函数 | 函数类型,表示函数名 | int func(int a,int b); |
| 结构体 | 用户自定义数据类型,可包含不同的类型成员 | struct Piont{int x;int y;); |
| 类 | 用户定义的数据类型,支持封装、继承和多态 | class MyClass{}; |
| 联合体 | 多个成员共享同一块内存 | union Data{int x;float f;}; |
| 枚举 | 用户定义的整数常量集合 | enum Color{RED,GREEN;}; |
笔记:复习函数指针、结构体赋值和类
【跳转复习总结】
1.4别名
| 别名 | 描述 | 示例 |
|---|---|---|
| #define | 文本替换(预处理器处理),不进行类型检查 | #define Myint int |
| typedef | 类型别名(编辑器处理) | typedef int Myint; |
| using | 类型别名(编辑器处理) | using Myint=int; |
1.5标准库类型
| 标准库类型 | 描述 | 示例 |
|---|---|---|
| string | 字符串类型 | string s="hello"; |
| vector | 动态数组 | vector< int >v={1,2,3}; |
| pair | 存储两个值的容器 | pair< int,float>p(1,2.0); |
| map | 键值对容器 | map< int,string>m; |
| set | 唯一值集合 | set< int>s={1,2,3}; |
笔记:复习map和set的区别,理解红黑树的原理
【跳转复习总结】
1.6枚举类型
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
……
标识符[=整型常数],
}枚举变量;
例如enum color{red,green,blue}c;
c=blue;
默认情况下,第一个名称为0,第二个为1,以此类推。还可以赋值enum color{red,green=5,blue};
1.7类型转换
| 常量转换 | 用于将const类型的对象转换为非const类型的对象。 const int i=10; int &r=const_cast< int&>(i); |
|---|---|
| 重新解释转换 | 将一个数据类型的二进制内存表示按另一个数据类型解释,属于强制按位转化 int i=10; float f=reinterpret_cast< float&>(i);//f=1.4013e-44 |
| 静态转换 | 将一种数据类型的值强制转换为另一种数据类型的值,通常用于类型相似的对象之间的转换,如int转换为float int i=10; float f=static_cast< float>(i); |
| 动态转换 | 用于在继承层次结构中进行向下转换(downcasting)的一种机制,通常用于将一个基类指针或引用转换为派生类指针或引用 |
二、修饰符和运算符
2.1修饰符
| const | const定义常量,表示该变量的值不能被修改 |
| static | static定义静态变量,表示该变量的作用域仅限于当前文件或当前函数内,不会被其他文件函数访问 |
2.2运算符
| .(点)和->(箭头) | 成员运算符用于引用类、结构和共同体的成员 |
| & | 指针运算符&返回变量的地址,例如&a给出变量的实际地址 |
| * | 指针运算符*表示解引用。指针var的值是内存地址,*var访问该内存地址的存放内容 |
注:
- 成员运算符.使用对象是对象实例,如p.name。成员运算符->使用对象是指针指向的对象(相当于先解引用再使用.),即p->name≡(*p).name
- int *x=&y;int z=*x;其中&y表示获取y的内存地址,指针x的值是y的内存地址;*x表示获取x指向的内存地址的存放内容,z的值是x指向的内存地址的存放内容
三、Lambda函数和表达式
| 一般形式:[capture] (parameters)->return-type{body} | [] (int x,int y)->int{int z=x+y;return z+x;} |
| 特殊情况:[capture] (parameters){body}。“没有返回值”或者“Lambda仅包含一个return语句” | []{global_x++;} [] (int x,int y){return x |
在Lambda表达式内可以访问当前作用域的变量,可以通过前面的[]指定
| [] | 没有定义任何变量。使用未定义变量会引发错误 |
| [x,&y] | x以传值方式传入(默认),y以引用方式传入 |
| [&] | 任何被使用到的外部变量都隐式地以引用方式加以引用 |
| [=] | 任何被使用到的外部变量都隐式地以传值方式加以引用 |
| [&,x] | x显示地以传值方式加以引用,其余变量以引用方式加以引用 |
| [=,&z] | z显示地以引用方式加以引用, |
四、数学函数
| double sqrt(double); | sqrt(x)返回√x |
| double pow(double,double); | pow(x,y)返回xy |
| double floor(double); | 向下取整(小于或等于参数的最大整数) |
| double ceil(double); | 向上取整(大于或等于参数的最小函数) |
| int rand(); | 随机数函数,通常与srand()time()函数搭配 srand((unsigned)time(NULL));//void srand(unsigned int seed); int r=rand(); |
五、字符串
5.1C字符串
| strcpy(s1,s2); | 复制字符串s2到字符串s1 |
| strcat(s1,s2); | 连接字符串s2到字符串s1的末尾 |
| strlen(s1); | 返回字符串s1的长度 |
| strcmp(s1,s2); | if(s1==s2)return 0; else if(s1 < s2)return -1; else return 1; |
| strchr(s1,ch); | 返回一个指针,指向字符串s1中字符ch第一次出现的位置 |
| strstr(s1,s2); | 返回一个指针,指向字符串s1中字符串s2第一次出现的位置 |
5.2C++的string类
| str1=str2; | 复制字符串s2到字符串s1 |
| str3=str1+str2; | 连接字符串s2到字符串s1的末尾 |
| str1.size(); | 返回字符串s1的长度 |
六、结构体
6.1定义处命名
struct type_name{
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
}object_names;
注释:type_name是结构体类型名,object_names是结构体变量名。结构体成员访问运算符(.),如a.name
6.2typedef关键字
typedef struct Books{
char title[50];
char author[50];
char subject[100];
int book_id;
}Books;
为Book{…}结构体取别名Books,可以用Books来定义Book类型的变量而不需要struct关键字,如Books book1;
复习总结
- 复习基本数据类型的取值范围和计算方法(计算机组成原理)
- 复习迭代器和Lambda表达式(leetcode)
- 复习函数指针、结构体和类
- 复习map和set的区别,理解红黑树的原理
后记:关于C++的高级教程和重点知识点代码以后可能会继续出,目前只总结基础知识点,前面内容总结自【菜鸟教程】,笔记只摘录了本人的疑难杂症,若有更多问题可以访问该网站,同时欢迎大家指正和批判文章中的内容,如果有格式上的优化建议也欢迎评论
相关文章:
2026《数据结构》考研复习笔记一(C++基础知识)
C基础知识复习 一、数据类型二、修饰符和运算符三、Lambda函数和表达式四、数学函数五、字符串六、结构体 一、数据类型 1.1基本类型 基本类型 描述 字节(位数) 范围 char 字符类型,存储ASCLL字符 1(8位) -128…...
XCTF-web(四)
unserialize3 需要反序列化一下:O:4:“xctf”:2:{s:4:“flag”;s:3:“111”;} php_rce 题目提示rce漏洞,测试一下:?s/Index/\think\app/invokefunction&functioncall_user_func_array&vars[0]phpinfo&vars[1][]1 flag࿱…...
在Vue项目中查询所有版本号为 1.1.9 的依赖包名 的具体方法,支持 npm/yarn/pnpm 等主流工具
以下是 在Vue项目中查询所有版本号为 1.1.9 的依赖包名 的具体方法,支持 npm/yarn/pnpm 等主流工具: 一、使用 npm 1. 直接过滤依赖树 npm ls --depth0 | grep "1.1.9"说明: npm ls --depth0:仅显示直接依赖…...
若依微服务版启动小程序后端
目录标题 本地启动,dev对应 nacos里的 xxx-xxx-dev配置文件 本地启动,dev对应 nacos里的 xxx-xxx-dev配置文件...
莒县第六实验小学:举行“阅读世界 丰盈自我”淘书会
4月16日,莒县第六实验小学校园内书香四溢、笑语盈盈,以“阅读世界 丰盈自我”为主题的第二十四届读书节之“淘书会”活动火热开启。全校师生齐聚一堂,以书会友、共享阅读之乐,为春日校园增添了一抹浓厚的文化气息。 活动在悠扬的诵…...
国产数据库与Oracle数据库事务差异分析
数据库中的ACID是事务的基本特性,而在Oracle等数据库迁移到国产数据库国产中,可能因为不同数据库事务处理机制的不同,在迁移后的业务逻辑处理上存在差异。本文简要介绍了事务的ACID属性、事务的隔离级别、回滚机制和超时机制,并总…...
C++学习记录:
今天我们来学习一门新的语言,也是C语言最著名的一个分支语言:C。 在C的学习中,我们主要学习的三大组成部分:语法、STL、数据结构。 C的介绍 C的历史可追溯至1979年,当时贝尔实验室的本贾尼斯特劳斯特卢普博士在面对复杂…...
等离子体浸没离子注入(PIII)
一、PIII 是什么?基本原理和工艺 想象一下,你有一块金属或者硅片(就是做芯片的那种材料),你想给它的表面“升级”,让它变得更硬、更耐磨,或者有其他特殊功能。怎么做呢?PIII 就像是用…...
LeetCode-16.最接近的三数之和 C++实现
一 题目描述 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解 示例 1: 输入:nums [-1,2,1,-4], target 1 输出&…...
【机器学习】每日一讲-朴素贝叶斯公式
文章目录 **一、朴素贝叶斯公式详解****1. 贝叶斯定理基础****2. 从贝叶斯定理到分类任务****3. 特征独立性假设****4. 条件概率的估计** **二、在AI领域的作用****1. 文本分类与自然语言处理(NLP)****2. 推荐系统****3. 医疗与生物信息学****4. 实时监控…...
C 语言中的 volatile 关键字
1、概念 volatile 是 C/C 语言中的一个类型修饰符,用于告知编译器:该变量的值可能会在程序控制流之外被意外修改(如硬件寄存器、多线程共享变量或信号处理函数等),因此编译器不应对其进行激进的优化(如缓存…...
Python自学第1天:变量,打印,类型转化
突然想学Python了。经过Deepseek的推荐,下载了一个Python3.12安装。安装过程请自行搜索。 乖乖从最基础的学起来,废话不说了,上链接,呃,打错了,上知识点。 变量的定义 # 定义一个整数类型的变量 age 10#…...
探索鸿蒙应用开发:ArkTS应用执行入口揭秘
# 探索鸿蒙应用开发:ArkTS应用执行入口揭秘 在鸿蒙应用开发的领域中,ArkTS作为声明式开发语言,为开发者们带来了便捷与高效。对于刚接触鸿蒙开发的小伙伴来说,搞清楚ArkTS应用程序的执行入口是迈向成功开发的关键一步。今天&…...
idea中提高编译速度研究
探索过程: 有三种情况: 第一种: idea中用eclipse编译器编译springboot项目,然后debug启动Application报错找不到类。 有待继续研究。 第二种: idea中用javac编译器编译springboot项目,重新构建用时&a…...
静态链接part2
编译 语义分析 由语义分析器完成,这个步骤只是完成了对表达式的语法层面的分析,它并不了解这个语句是否真的有意义(例如在C语言中两个指针做乘法运算,这个语句在语法上是合法的,但是没有什么意义;还有同样…...
Vue3+Vite+TypeScript+Element Plus开发-17.Tags-组件构建
系列文档目录 Vue3ViteTypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 Header响应式菜单缩展 Mockjs引用与Axios封装 登录设计 登录成功跳转主页 多用户动态加载菜单 Pinia持久化 动态路由 -动态增加路由 动态路由-动态删除…...
MATLAB R2023b如何切换到UTF-8编码,解决乱码问题
网上都是抄来抄去,很少有动脑子的,里面说的方法都差不多,但是在R2023b上怎么试都不管用,所以静下心来分析了下,我的 ...\MATLAB\R2016b\bin\lcdata.xml 里面除了注释几乎是空的,如果这样就能用为什么要加…...
3D语义地图中的全局路径规划!iPPD:基于3D语义地图的指令引导路径规划视觉语言导航
作者: Zehao Wang, Mingxiao Li, Minye Wu, Marie-Francine Moens, Tinne Tuytelaars 单位:鲁汶大学电气工程系,鲁汶大学计算机科学系 论文标题: Instruction-guided path planning with 3D semantic maps for vision-language …...
ShellScript脚本编程
语法基础 脚本结构 我们先从这个小demo程序来窥探一下我们shell脚本的程序结构 #!/bin/bash# 注释信息echo_str"hello world"test(){echo $echo_str }test echo_str 首先我们可以通过文本编辑器(在这里我们使用linux自带文本编辑神器vim),新建一个文件…...
【HarmonyOS 5】敏感信息本地存储详解
【HarmonyOS 5】敏感信息本地存储详解 前言 鸿蒙其实自身已经通过多层次的安全机制,确保用户敏感信息本地存储安全。不过再此基础上,用户敏感信息一般三方应用还需要再进行加密存储。 本文章会从鸿蒙自身的安全机制进行展开,最后再说明本地…...
大厂面试:六大排序
前言 本篇博客集中了冒泡,选择,二分插入,快排,归并,堆排,六大排序算法 如果觉得对你有帮助,可以点点关注,点点赞,谢谢你! 1.冒泡排序 //冒泡排序ÿ…...
.exe变成Windows服务
.exe变成Windows服务) 场景步骤 1: 安装 PyInstaller和win32serviceutil步骤 2: 使用 PyInstaller 创建 .exe 文件步骤 3: 检查生成的 .exe 文件步骤 4: 安装服务步骤 5: 启动服务步骤 6: 配置服务自动启动(可选)步骤 7: 检查服务状态完整示例…...
探索鸿蒙沉浸式:打造无界交互体验
一、鸿蒙沉浸式简介 在鸿蒙系统中,沉浸式是一种极具特色的设计理念,它致力于让用户在使用应用时能够全身心投入到内容本身,而尽可能减少被系统界面元素的干扰。通常来说,就是将应用的内容区巧妙地延伸到状态栏和导航栏所在的界面…...
el-tree组件使用过滤时,不展示筛选目标的子节点
1.el官方示例过滤方法 const filterNode (value: string, data: Tree) > {if (!value) return truereturn data.label.includes(value) }2.修改后的过滤方法 /*** 树节点过滤*/ const filterNode (value, data, node) > {if (!value) return true;let parentNode no…...
超详细!Android 面试题大汇总与深度解析
一、Java 与 Kotlin 基础 1. Java 的多态是如何实现的? 多态是指在 Java 中,同一个行为具有多个不同表现形式或形态的能力。它主要通过方法重载(Overloading)和方法重写(Overriding)来实现。 方法重载&a…...
网站301搬家后谷歌一直不收录新页面怎么办?
当网站因更换域名或架构调整启用301重定向后,许多站长发现谷歌迟迟不收录新页面,甚至流量大幅下滑。 例如,301跳转设置错误可能导致权重传递失效,而新站内容与原站高度重复则可能被谷歌判定为“低价值页面”。 即使技术层面无误&a…...
在Mac上离线安装k3s
目录 首先是安装multipass。 1. 系统要求 2. 环境准备 本来想照着网上文档学习安装一下k3s,没想到在docker被封了之后,现在想通过命令行去下载github的资源也不行了(如果有网友看到这个文档、并且知道问题原因的,请留言告知&am…...
无锁队列--知识分享
目录 无锁队列 无锁队列是什么 为什么需要无锁队列 队列的类型 无锁队列的分类 ringbuffer(SPSC) ret_ring(MPMC) 无锁队列 无锁队列是什么 无锁队列通过原子操作来实现线程安全的队列,属于非阻塞队列 …...
玩转Docker | 使用Docker部署Memos笔记工具
玩转Docker | 使用Docker部署Memos笔记工具 前言一、Memos介绍Memos简介主要特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署Memos服务下载镜像创建容器创建容器检查容器状态检查服务端口安全设置四、访问Memos服务访问Memos首页注册账号五、基本使用…...
2025低代码平台选型策略:ROI导向下的功能与成本权衡
在当今快速变化的商业环境中,企业面临着前所未有的挑战与机遇。数字化转型已成为企业提升竞争力的关键,而软件开发的高成本和长周期无疑是实现这一转型的绊脚石。 低代码平台的兴起,为企业提供了一种高效、灵活的解决方案,使得非…...
