C++内存,引用与函数进阶
一内存分区1.代码区程序运行前分的区存放函数的二进制代码由操作系统管理的。特点:1.共享共享的目的是对一些频繁被执行的程序只需要在内存中有一份代码即可。2.只读目的是防止程序意外的修改了它的指令。2.全局区程序运行前分的区全局变量和静态变量static关键词存放在这里。 还包含了常量区字符串常量和全局常量const修饰的全局变量也存放在这里。特点该区域的数据在程序结束后是由操作系统释放的。3.栈区程序运行后分的区由编译器自动分配释放存放函数的参数值局部变量等。注不要返回局部变量的地址栈区开辟的数据由编译器自动释放。#include iostream using namespace std; int* func() { int a 10; //栈区的局部变量 return a; } int main() { int* p func(); cout *p endl; cout *p endl; return 0; }第一个值为10因为编译器作了保留第二次就不会保留了值为乱码。4.堆区程序运行后分的区由程序员分配释放若程序员没有释放程序结束时由操作系统回收。利用new将数据开辟到堆区结束时用delete来释放。#include iostream using namespace std; int* func() { int* arr new int(10); //指针本质是局部变量存放在栈上而指针保留的数据存放在堆区 return arr; } //创建数组 void test() { int* arr new int[10]; for (int i 0; i 10; i) arr[i] i 100; for (int i 0; i 10; i) cout arr[i] endl; delete[] arr; } int main() { test(); int* p func(); cout *p endl; cout *p endl; delete(p); return 0; }二引用1.引用的基本使用作用给变量起别名语法数据类型 别名原名2.引用的注意事项引用必须初始化。引用一旦初始化后就不可以更改了。3.引用做函数参数作用函数传参时可以利用引用的技术让形参修饰实参。优点可以简化指针修改实参引用的语句更清楚简单。#include iostream using namespace std; //1.值传递 void swap1(int a, int b) { int temp a; a b; b temp; } //2.地址传递 void swap2(int* a, int* b) { int temp *a; *a *b; *b temp; } //3.引用传递 void swap3(int a, int b) { int temp a; a b; b temp; } int main() { int a 10, b 20; //swap1(a, b); //形参不会修饰实参 //swap2(a, b);//形参会修饰实参 swap3(a, b);//形参会修饰实参 cout a a endl; cout b b endl; return 0; }4.引用做函数返回值作用引用是可以作为函数的返回值存在的用处函数调用作为左值5.引用的本质引用的本质在c内部实现是一个指针常量。6.常量引用作用常量引用主要用来修饰形参防止误操作。在函数行参列表中可以加const修饰形参防止形参改变实参。#include iostream using namespace std; void show(const int a) { //a 1000;//此时不可对a进行修改会报错 cout a a endl; } int main() { int a 100; //此时编译器将代码修改为int temp10;const int arrtemp; //const int arr 10; show(a); return 0; }三函数提高1.函数默认参数在c中函数形参列表中的形参是可以有默认值的。语法函数类型 函数名参数 默认值{}如果在有默认值的情况下还传了数据那么函数就会用我们传的数据。注:①如果某个参数有默认值那么从这个参数以后的每个参数都要有默认值。②函数声明和函数实现只能有一个可以有默认值。如果都有会有二义性2.函数的占位参数用来占位函数调用必须填补该位置。语法函数类型 函数名数据类型{}3.函数重载作用函数名可以相同提高复用性。函数重载满足的条件同一个作用域下函数名相同函数参数类型个数或顺序不同#includeiostream using namespace std; //1.个数不同 void func1(int a) { cout func1(int a) endl; } void func1(int a, int b) { cout func1(int a,int b) endl; } //2.顺序不同 void func2(int a, double b) { cout func2(int a,double b) endl; } void func(double a, int b) { cout func2(double a,int b) endl; } //3.类型不同 void func3(int a) { cout func3(int a) endl; } void func3(double a) { cout func3(double a) endl; } int main() { int a 10, b 20; double c 3.14; func1(a); func1(a, b); cout endl; func2(a, c); func2(c, a); cout endl; func3(a); func3(c); return 0; }注函数的返回类型不可以做重载条件。注意事项1.引用作为重载条件当传入10时int a10不合法所以不会调用func(int a),而是调用func(const int a).2.函数重载碰到默认参数此时会存在二义性尽量避免这种写法。

相关新闻

01背包 这个算法界的守门员

01背包 这个算法界的守门员

🌳一个写全栈技术、偏底层基建、爱研究 bug 的程序员博客。技术界的一名小工匠⊥⊤,每天进步一点点。背包问题可以说是算法经典中的经典,动态规划算法中经典中的经典。 01背包仅是背包问题的一个个例,背包还有完全背包、分组背包等…

2026/7/4 4:28:21阅读更多 →
E-Hentai漫画批量下载终极指南:免费一键打包完整教程

E-Hentai漫画批量下载终极指南:免费一键打包完整教程

E-Hentai漫画批量下载终极指南:免费一键打包完整教程 还在为E-Hentai漫画的繁琐下载而烦恼吗?E-Hentai-Downloader是一款强大的浏览器脚本工具,能够智能解析网页内容,实现多线程并行下载,自动将漫画打包为ZIP文件&…

2026/7/4 4:28:21阅读更多 →
E-Hentai漫画下载器完整指南:免费批量下载终极教程

E-Hentai漫画下载器完整指南:免费批量下载终极教程

E-Hentai漫画下载器完整指南:免费批量下载终极教程 你是否经常在E-Hentai上找到心仪的漫画,却为了一页页手动保存而烦恼?E-Hentai下载器正是你需要的解决方案!这款强大的浏览器脚本工具能够智能解析网页内容,实现多线程…

2026/7/4 4:28:21阅读更多 →
Video2X:如何用AI技术将你的低清视频轻松提升至4K画质?

Video2X:如何用AI技术将你的低清视频轻松提升至4K画质?

Video2X:如何用AI技术将你的低清视频轻松提升至4K画质? 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trend…

2026/7/4 6:08:29阅读更多 →
Flutter Planets教程:从零开始构建精美行星展示应用的完整指南

Flutter Planets教程:从零开始构建精美行星展示应用的完整指南

Flutter Planets教程:从零开始构建精美行星展示应用的完整指南 【免费下载链接】flutter_planets_tutorial The Flutter Planets app tutorial with commits per lesson 项目地址: https://gitcode.com/gh_mirrors/fl/flutter_planets_tutorial Flutter Plan…

2026/7/4 6:08:29阅读更多 →
3个颠覆性技巧:用Video2X让你的老旧视频重获新生

3个颠覆性技巧:用Video2X让你的老旧视频重获新生

3个颠覆性技巧:用Video2X让你的老旧视频重获新生 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/video2x …

2026/7/4 6:08:29阅读更多 →
Windows 11系统优化革命:Win11Debloat如何让你重获数字自由

Windows 11系统优化革命:Win11Debloat如何让你重获数字自由

Windows 11系统优化革命:Win11Debloat如何让你重获数字自由 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter a…

2026/7/4 6:08:29阅读更多 →
CANN/GE多func处理函数

CANN/GE多func处理函数

# 多func处理函数 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTor…

2026/7/4 6:08:29阅读更多 →
Selenium自动化测试性能优化:5个核心方法提升4倍执行速度

Selenium自动化测试性能优化:5个核心方法提升4倍执行速度

1. 项目概述:为什么你的Selenium脚本跑得慢? 如果你用过Selenium做UI自动化测试,大概率经历过这样的场景:满怀期待地运行脚本,结果浏览器启动慢吞吞,页面加载像蜗牛,元素定位要等半天&#xff0…

2026/7/4 6:03:26阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/3 14:18:39阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/3 14:38:35阅读更多 →
端到端自动驾驶:从GTC‘26看工程可信落地的核心逻辑

端到端自动驾驶:从GTC‘26看工程可信落地的核心逻辑

1. 项目概述:当算法工程师走进GTC26展厅,看到的不是芯片,而是“端到端”的呼吸节奏“端到端”这三个字,在GTC’26现场出现的频率,高得像NVLink带宽测试时的峰值曲线——它不再是一个论文里的技术路径选项,而…

2026/7/4 0:02:48阅读更多 →
缺牙修复科普:常见义齿类型与选择参考

缺牙修复科普:常见义齿类型与选择参考

缺牙修复科普:常见义齿类型与选择参考牙齿缺失是中老年人群中较为常见的口腔问题,不仅会造成咀嚼不便、进食受影响,长期还可能对营养摄入与日常社交带来困扰。义齿是改善缺牙问题的常用方式,目前市面上的义齿种类较多,…

2026/7/4 0:02:48阅读更多 →
STM32F091RC与LTC6904实现高精度方波信号生成

STM32F091RC与LTC6904实现高精度方波信号生成

1. 项目概述:LTC6904与STM32F091RC的精准方波生成方案在嵌入式系统开发中,精确的时钟信号和定时控制往往是项目成败的关键。LTC6904作为一款低功耗、高精度的可编程振荡器芯片,与STM32F091RC这款ARM Cortex-M0内核微控制器的组合,…

2026/7/4 0:02:48阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/4 1:16:56阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/4 2:33:55阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/4 2:33:55阅读更多 →