当前位置: 首页 > news >正文

C++函数的返回值在内存中的传递过程

1.返回值:

int test () { int a=1; return a; }

  • 返回值时最简单的方式,它的操作主要在栈上,变量a在函数结束后会删除,为了返回a的值,系统会在内部建立一个临时变量保存a的值,以返回给调用该函数的表达式,调用结束后变量便不再存在。如果a是简单地数据类型也无所谓,不是很占用内存,如果a是大的自定义类型的数据,那么对a的复制将会占用比较大的内存。函数返回值是右值,不能进行运算符操作。

2.返回指针:

int *test2() { int *b=new int(); *b=2; return b; }

3.返回引用:

int& test2() { int *b=new(); *b=2; return b; }


  • C++中成员函数返回对象与返回引用
    • 返回对象与返回引用的区别:函数原型与函数头
      • Car run(const Car&)//返回对象
      • Car& run(const Car&)//返回引用
    • 返回对象涉及到生成对象的副本。因此返回对象的成本包括了调用复制构造函数来生成副本所需要的时间和调用析构函数删除副本所需要的时间。返回引用可以节省时间和内存。直接返回对象与函数直接return a返回值一样。都会生成临时副本。

http://www.mrgr.cn/news/75107.html

相关文章:

  • Vscode写markdown快速插入python代码
  • LLM Inference Unveiled
  • 【图像检测】深度学习与传统算法的区别(识别逻辑、学习能力、泛化能力)
  • 搭建大数据技能竞赛比赛环境容器docker模块A
  • Java策略模式应用实战
  • 241120学习日志——[CSDIY] [InternStudio] 大模型训练营 [09]
  • 第4章-计划 4.4 范围管理
  • Python基础学习-07不可重复的set集合
  • 常用的生物医药专利查询数据库及网站(很全!)
  • Jetpack 之 Ink API初探
  • qt QQuickView详解
  • 《DPT: Deformable Patch-based Transformer for Visual Recognition》论文翻译
  • Go常见框架对比
  • AI驱动的电商创新:提升销售效率与用户体验
  • session 的工作原理
  • SpringBoot(十)SpringBoot使用QQ邮箱stmp发送邮件
  • 【计算机网络】UDP网络程序
  • 大数据新视界 -- 大数据大厂之 Impala 存储格式转换:从原理到实践,开启大数据性能优化星际之旅(下)(20/30)
  • 一个免费的Java 应用内存问题分析工具,用于 OutOfMemoryErrors 和堆大小调整等问题(带私活源码)
  • 基于51单片机智能窗帘仿真设计
  • 解决failed to execute PosixPath(‘dot‘) 或者GraphViz‘s executables not found
  • 【MySQL】约束
  • 三、模板与配置(下)
  • 【MySQL】数据库必备知识:全面整合表的约束与深度解析
  • vue中重置对象的好使方式(封装好的函数,可直接食用)
  • YZ系列工具之YZ10:VBA_梦幻图像