C++内存,引用与函数进阶
📅 2026/7/4 4:33:34
👁️ 次浏览
一内存分区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.函数重载碰到默认参数此时会存在二义性尽量避免这种写法。
1、volatile关键字简介volatile 是 C/C/Java 等语言中的一个类型修饰符,它的核心作用是告诉编译器:被修饰的变量的值可能会在程序控制范围之外被改变,因此每次使用时都必须重新从内存读取,不能进行优化,优化可减小bin文…
📅 2026/7/4 4:33:34
在数字化浪潮席卷全球的今天,制造业的竞争早已从单一的产品质量比拼,升级为供应链协同效率的较量。在这一进程中,电子数据交换(EDI)软件正作为连接上下游的“隐形引擎”,发挥着不可替代的作用。一、 什么是…
📅 2026/7/4 4:33:34
1. 项目概述:为什么选择这个技术栈?如果你刚接触自动化测试,或者想从零开始搭建一个稳定、可维护的测试环境,那么“Python Pytest Selenium”这个组合,绝对是你的不二之选。我从业十多年,带过不少团队&am…
📅 2026/7/4 4:33:34
Enclave项目深度解析:React编译工具的核心架构与实现原理 【免费下载链接】enclave A simpler way to compile React applications http://enclave.js.org 项目地址: https://gitcode.com/gh_mirrors/en/enclave
Enclave作为一款React编译工具,为…
📅 2026/7/4 5:43:45
终极MSEdgeRedirect完全指南:如何快速重定向Edge链接到默认浏览器 【免费下载链接】MSEdgeRedirect A Tool to Redirect News, Search, Widgets, Weather and More to Your Default Browser 项目地址: https://gitcode.com/GitHub_Trending/ms/MSEdgeRedirect …
📅 2026/7/4 5:43:45
asc_loadalign_brc_elem 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https:/…
📅 2026/7/4 5:43:45
5分钟掌握E-Hentai智能下载终极方案
E-Hentai智能下载工具为您提供全新的漫画资源管理体验,彻底告别繁琐的手动保存操作。无论您是技术爱好者还是漫画收藏者,这款工具都能让您高效获取和管理心仪的图库资源。💡
智能解决方案应对资源管理难…
📅 2026/7/4 5:43:45
节能与新能源汽车技术路线图3.0:产业总体技术路线图深度解析
关键词
节能与新能源汽车、技术路线图、电动化、智能化、智能制造、氢燃料电池、智能网联汽车、汽车芯片、车路云一体化、碳排放峰值
摘要
本文基于中国汽车工程学会发布的《节能与新能源汽车技术路线图3…
📅 2026/7/4 5:43:45
Qt程序部署终极指南:如何用DeployQt一键打包你的Qt应用 【免费下载链接】DeployQt 基于Windows系统的Qt打包程序(最新版本V1.0.1) 项目地址: https://gitcode.com/gh_mirrors/de/DeployQt
还在为Qt应用部署的繁琐步骤头疼吗?每次发布Qt程序都要手…
📅 2026/7/4 5:41:45
Axure RP中文界面终极解决方案:3分钟告别英文困扰 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn
还在为Axure RP的英…
📅 2026/7/4 0:00:50
1. MC6470与STM32F745VG的黄金组合解析在工业自动化和机器人控制领域,传感器与微控制器的协同工作能力直接决定了系统的响应速度和定位精度。MC6470作为一款6自由度惯性测量单元(6DOF IMU),与STM32F745VG这款基于ARM Cortex-M7内核的高性能微控制器组合&…
📅 2026/7/4 0:00:50
1. 项目概述:为什么要在本地跑 SAM Audio?这不只是“能用”,而是“必须用”SAM Audio——全称是 Segment Anything Model for Audio,不是 Meta 那个视觉领域的 SAM(Segment Anything Model)的简单移植&…
📅 2026/7/4 0:00:50
6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…
📅 2026/7/2 17:37:53
引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…
📅 2026/7/2 17:37:51
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/4 5:07:51
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/4 5:10:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/3 10:20:06