C++中的内存分区、引用、函数
内存分区模型
- 代码区
- 存放CPU执行的机器指令
- 代码区是共享的且具有只读性
- 全局区
- 全局变量和静态变量都存放在此处
- 全局区还包括了常量区、字符串常量和其他常量也存放在此
- 该区域的数据在程序结束后由操作系统释放
- const修饰的局部变量并不算在全局区
- 栈区
- 由编译器自动分配和释放,存放函数的参数值,局部变量等
- 不要返回局部变量等地址,栈区开辟的数据由编译器自动释放
- 堆区
- 由程序员分配释放,若程序员不释放,程序结束时,由操作系统回收
- cpp中就是new—new后返回地址
- 代码区和全局区—运行前划分的两个区域
- 堆栈区—运行后划分区域
- new的分析
- 在堆中开辟空间—delete对应进行删除
- new返回是该类型的指针
- 语法: new 数据类型
int *p = new int (10); delete p; int *arr = new int[10];//10个元素 for (int i = 0; i < 10;i++){arr[i] = i; } delete[] arr;
引用
- 给变量起别名
- 定义
- 数据类型 &别名 = 原名
- 别名和原名其实本质上就代表了同一块内存
- 注意事项
- 引用必须要初始化
- 引用初始化后就不可以改变
- 引用做函数参数
- 作用—函数传参时,可以利用引用技术让形参修饰实参
- 优点—可以简化指针修改实参
- 函数传参的方式
- 值传递
- 地址传递
- 引用传递
- 引用做函数返回值
- 作用—引用是可以作为函数的返回值存在的
- 注意—不要返回局部变量的引用—static修饰后即可在全局区域,这时可以返回
- 作为函数返回值,既可以作为赋值的左值也可以是右值
int& test1(void){static a = 10;return a } int& test2(void){static b = 5;return b } int &c = test1();//c指向10 test2() = 1000;//将b改为1000 - 引用的本质在cpp内部就是一个指针常量
- int &ref = a; <==> int* const ref = &a
- ref = 20 <==> *ref = 20
- 所以引用一旦初始化后就不可以发生改变
- 常量引用
- 作用—修饰形参防止误操作
- 两种使用场景
- const int& ref = 10;—合法—int temp = 10; const int &ref = temp;
- int& ref = 10;—非法—引用必须引用一块合法的内存空间
- 修饰形参来防止误操作—void show(const int& tem)—这样函数内部不可修改tem指向的内存
函数提高
- 函数的默认参数
- cpp中函数的形参列表中的形参是可以有默认值的
- 语法—返回值类型 函数名 (参数=默认值){}
- 默认参数依然可以修改,传入参数的优先级更高
- 注意
- 如果某个位置有默认参数则从这个位置往后,从左到右都必须有默认值
- 如果函数声明有默认参数,函数的实现就不能有默认参数
- 声明和实现只能有一个地方有默认值
- 函数占位参数
- cpp中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置
- 语法—返回值类型 函数名 (数据类型){}—void test(int a, int){}
- 占位参数也可以默认参数
- 函数重载
- 函数名可以相同,提高复用性
- 根据函数参数的不同来判断调用哪一个参数
- 条件
- 同一个作用域下
- 函数名称相同
- 函数参数类型不同或者个数不同或者顺序不同
- 函数返回值不同不能作为重载条件
- 注意事项
- 引用作为函数重载的条件
- 在碰到const修饰的参数时,需要明确,可以实现常数的传递const int &a 可以被传递10
- const可以作为重载条件,但是要注意传什么值
- 函数重载碰到函数的默认参数
- 可能出现多个可调用
void test(int a);void test(int a, int b = 10);//如果如下调用则不合法test(10);//如果如下调用则合法test(10, 20); - 引用作为函数重载的条件
相关文章:
C++中的内存分区、引用、函数
内存分区模型 代码区 存放CPU执行的机器指令代码区是共享的且具有只读性 全局区 全局变量和静态变量都存放在此处全局区还包括了常量区、字符串常量和其他常量也存放在此该区域的数据在程序结束后由操作系统释放const修饰的局部变量并不算在全局区 栈区 由编译器自动分配和释放…...
关于angular表格total模板中一直为0
哈喽 小伙伴们大家好昨天在用angular得antdesign组件得table表格 我用total模板 结果,total一直为0这可是愁坏我了 <ng-template #totalTemplate let-total>找到 {{ total }} 条结果</ng-template>[nzShowTotal]"totalTemplate"最后找到原因了…...
多线程事务怎么回滚
背景介绍1,最近有一个大数据量插入的操作入库的业务场景,需要先做一些其他修改操作,然后在执行插入操作,由于插入数据可能会很多,用到多线程去拆分数据并行处理来提高响应时间,如果有一个线程执行失败&…...
基于FPGA的时间数字转换(TDC)设计(五:基于Carry4的高精度TDC设计)
1.基于Carry4进位链设计原理 常见的基于FPGA开发的TDC有直接计数法,多相位时钟采样法,抽头延迟线法等,之前内容为基于多相位的TDC,本章节中,主要讲解基于抽头延迟线法。在Xilinx FPGA开发中,实现抽头延迟线法有很多种,如使用IODELAY构建延迟进位链,此处将介绍基于Carr…...
【C++】二叉搜索树的实现(递归和非递归实现)
文章目录1、二叉搜索树1.1 构建二叉搜索树1.2 二叉搜索树的插入1.3 二叉搜索树的删除1.4 二叉搜索树插入和删除的递归实现为了学习map和set的底层实现,需要知道红黑树,知道红黑树之前需要知道AVL树。 红黑树和AVL树都用到了二叉搜索树结构,所…...
春招来了,如何正确使用领英超高效招聘海外员工、挖掘人才?
金三银四到了,每年的这个时候都是企业招聘的好时机。而领英是目前全球最大的职场社交网络平台,基本上海外求职都是在使用它,所以很多企业涉及到海外招聘时,都会优先考虑领英,但是却经常缺乏一些经验技巧,今…...
Mysql中锁机制深入理解
Mysql中锁机制深入理解默认大家已经知道。分类性能悲观锁,乐观锁操作类型读锁,写锁,数据粒度表锁,行锁,页面锁更细粒度间隙锁,临键锁按使用来讲。由数据粒度出发。表锁,分为 共享锁,…...
去中心化社交网络协议除了Nostr还有哪些?
当下最火的去中心化社交软件Dmaus就是基于Nostr协议开发的,Nostr协议的基本情况之前的文章《一文了解去中心化社交网络协议Nostr》已经做了详细介绍,本文将介绍其他几个目前比较流行的去中心化社交协议。FarcasterFarcaster是由前Coinbase高管Dan Romero…...
【FT2000/4+X100】调试记录
订阅专栏 硬件环境FT2000/4+X100,单板结构,对外显示,运行银行麒麟操作系统。 一 生成UEFI.BIN,烧写在FT2000-4的QSPI Flash中 1 2 下载源文件 edk2-for-support.tar; 参考文件 ft2004c&D2000编译打包说明V1.0.5; 解压源文件; 根目录下 build2004C.sh为四核产品…...
我的Android启动优化—【黑白屏优化】
简述 在Android App使用过程中,对于应用的优化是一个加分项,举个例子,打开你的App需要2秒,人家0.5秒,这就是很大的用户体验上的优化。 问题的产生 在开发中,我们在启动app的时候,屏幕会出现一…...
TongWeb8编码设置说明
应用场景:在遇到中文问题时,常需要通过设置编码格式来解决问题。下面介绍TongWeb8的编码设置及优先级。一、web.xml中请求、响应编码的配置优先级最高在JavaEE8规范中web.xml增加了request, response编码配置,该配置优先级最高。<?xml ve…...
不同相机之间图片像素对应关系求解(单应性矩阵求解)
一、场景 相机1和相机2相对位置不变,相机拍摄图片有重叠,求他们交叠部分的一一对应关系。数学语言描述为已知相机1图片中P点像素(u1, v1),相机1中P点在相机2图片中像素值为(u2, v2),它们存在某种变换,求变换矩阵。 因为…...
远程管理时代,还得是智能化PDU才靠得住!
在如今这个信息技术高速发展的时代,数据中心IDC机房服务器数量与日俱增,提供DNS域名服务、主机托管服务、虚拟主机服务等服务的服务器是IDC最基本的功能之一。服务器需要7*24小时不间断持续工作,但当服务器数量很大,服务器工作、重…...
通俗易懂理解——布隆过滤器
文章目录概述本质优缺点优点:缺点:实际应用解决redis缓存穿透问题:概述 本质 本质:很长的二进制向量(数组) 主要作用:判断一个数据在这个数组中是否存在,如果不存在为0,…...
TypeScript 学习之类型推导
在一些情况下,代码上没有显性明确类型,typescript 可以隐形推断出类型。 基础 let x 3;变量x的类型被推断为数字。 类型推断发生在初始化变量和成员,设置默认参数值和决定函数返回值时 最佳通用类型 let x [0, 1, null]; // 类型为 numb…...
Android四大组件——Service详解
Service 为后台运行,不可见,没有界面。优先级高于Activity(内存不足时先杀掉Activity),运行在主线程且不能做耗时操作。 一、Service 启动方式 1、startService() 通过 startService 启动后,service会一直…...
svg转png
svg转png写了一个spring boot项目,支持传入svg文件转出png图片,并且自定义转出png的宽和高。主要代码如下:所需依赖如下:演示如下:首先,运行项目使用接口调用工具调用接口发送请求,提取文件1000…...
教你如何搭建人事OA-员工管理系统,demo可分享
1、简介1.1、案例简介本文将介绍,如何搭建人事OA-员工管理。1.2、应用场景人事OA-员工管理应用对员工信息进行管理,可办理入职、转正、离职等流程。2、设置方法2.1、表单搭建1)新建表单【员工管理】,字段设置如下:名称…...
C++递推基础知识
文章目录一、递推的概念二、递推和递归的区别三、递推的实例1、最基础的:斐波那契数列2、变形版斐波那契数列3、较复杂的递推式求解:昆虫繁殖4、经典逆推问题:题目数量一、递推的概念 1、什么是递推算法? 递推算法:是…...
【Python入门第十天】Python 布尔
布尔表示两值之一:True 或 False。 布尔值 在编程中,通常需要知道表达式是 True 还是 False。 可以计算 Python 中的任何表达式,并获得两个答案之一,即 True 或 False。 比较两个值时,将对表达式求值,P…...
云平台测试实战:AWS Lambda性能深度调优策略
一、性能瓶颈定位:测试工程师的核心关注点冷启动延迟分析现象:首次调用或闲置后调用时延突增(可达秒级)测试方案:使用CloudWatch Logs追踪Init Duration指标^4^对比开启预置并发(Provisioned Concurrency&a…...
56. 合并区间(中等)
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。示例 1:输入:intervals [[1,3],[…...
COMSOL多物理场/FDTD时域有限差分/ RSoft光电器件仿真设计“ 几十种案例解析,助您掌握光电器件仿真模拟
光电作为物理类专业课程中极为重要的一部分,其教学内容一直受到各个高校的重视。结合目前许多学生对实验开展的痛难点,将软件仿真引入实验当中,通过软件的可视化处理有效直观的展示光电仿真的流程,与实验数据结合,使得…...
开源项目《Aviator》安装与使用指南
开源项目《Aviator》安装与使用指南 【免费下载链接】aviator Level up your Aviator game! This app employs its prediction prowess to help you maximize your profit - and its completely free! 项目地址: https://gitcode.com/gh_mirrors/avia/aviator 本指南旨在…...
VideoChatGPT未来路线图:即将推出的5大令人期待的新功能
VideoChatGPT未来路线图:即将推出的5大令人期待的新功能 【免费下载链接】Ask-Anything [VideoChatGPT] ChatGPT with video understanding! And many more supported LMs such as miniGPT4, StableLM, and MOSS. 项目地址: https://gitcode.com/gh_mirrors/as/As…...
程序调试操作
文章目录一 什么是调试二 常见调试方式2.1 阅读代码与日志打印2.2 使用工具三 使用IDEA调试Java程序3.1 如何打断点3.2 如何启动调试3.3 调试界面3.4 逐过程Step over:快捷键F83.5 逐语句Step into: 快捷键F73.6 强制步入功能:AltShiftF73.7 跳出功能3.8 运行到光标所在位置3.9…...
2026软文发稿新逻辑:掌握这3个软文发布平台,软文效果直接升
进入2026年,软文投放的底层逻辑已发生根本性转变。面对媒介碎片化与用户注意力稀缺的双重挑战,单纯的“广撒网”模式效果递减,企业开始寻求更精准、更高效的传播路径。在此背景下,发稿平台的战略价值从简单的“渠道执行者”上升为…...
CLIP-GmP-ViT-L-14应用案例:工业零件图-技术规格书语义检索系统
CLIP-GmP-ViT-L-14应用案例:工业零件图-技术规格书语义检索系统 1. 项目背景与价值 在工业制造领域,技术规格书与零件图纸的匹配一直是个耗时费力的工作。传统基于关键词的检索方式往往因为术语差异而效果不佳。CLIP-GmP-ViT-L-14模型通过几何参数化微…...
lychee-rerank-mm开源部署:GitHub仓库结构说明+自定义模型替换路径
lychee-rerank-mm开源部署:GitHub仓库结构说明自定义模型替换路径 1. 项目概述 lychee-rerank-mm是一个基于Qwen2.5-VL多模态大模型架构的专业重排序系统,专门为RTX 4090显卡优化设计。这个项目实现了文本描述与批量图片的智能相关性分析和自动排序功能…...
Qwen3.5-35B-AWQ-4bit镜像免配置优势:无网络依赖、无外部模型下载、纯本地运行
Qwen3.5-35B-AWQ-4bit镜像免配置优势:无网络依赖、无外部模型下载、纯本地运行 1. 开箱即用的多模态AI解决方案 Qwen3.5-35B-A3B-AWQ-4bit是一款专为视觉多模态理解设计的量化模型,它彻底改变了传统AI模型部署的复杂流程。这个镜像最突出的特点就是完全…...
