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

函数--值传递

函数值传递特点:

  • 形参是实参的副本,修改形参不影响实参
  • 函数栈帧中形参的独立内存空间
  • 适用场景:无需修改原始数据的计算逻辑

实际代码测试:

#include<iostream> using namespace std; //定义一个 实现两个数字进行交换的函数 void swap(int num1,int num2) { //输出交换前的num1,num2的值 cout<<"交换前:"<<endl; cout<<"num1="<<num1<<endl; cout<<"num2="<<num2<<endl; //对num1,num2进行交换 int temp=num1; num1=num2; num2=temp; //输出交换后的num1,num2的值 cout<<"交换后:"<<endl; cout<<"num1="<<num1<<endl; cout<<"num2="<<num2<<endl; //不需要返回值的时候(void),可以不写return } int main() { int a=10; int b=20; cout<<"交换前:"<<endl; cout<<"a="<<a<<endl; cout<<"b="<<b<<endl; swap(a,b); cout<<"交换后:"<<endl; cout<<"a="<<a<<endl; cout<<"b="<<b<<endl; system("pause"); return 0; }

通过运行上述代码,我们可以发现实参a,b的数值在交换前后并未发生改变 ,而形参num1,num2发生了交换。下面我们将展示其背后的原理。

原理讲解

值传递的局限性

  • 大结构体传递时的性能问题
  • 无法通过值传递实现“输出型参数”
  • 解决方案:改用指针或引用(C++)
http://www.jsqmd.com/news/327127/

相关文章:

  • SharpMap 教程目录
  • geometry-api-java 教程目录
  • opengis-utils-for-net 教程目录
  • openlayers 教程目录
  • geometry-api-net 教程目录
  • postgis 教程目录
  • geoserver-cloud 教程目录
  • Vue3+Pinia实战:从零搭建企业级后台管理系统的核心架构
  • geoserver-rest-api 教程目录
  • geoserver 教程目录
  • geotools 教程目录
  • 杂题选做(2)
  • Flink 自适应批执行(Adaptive Batch Execution)让 Batch 作业“边跑边优化”
  • opengis-utils-for-java 教程目录
  • Flink CLI 从提交作业到 Savepoint/Checkpoint、再到 YARN/K8S 与 PyFlink
  • 制作剧本杀角色匹配工具,输入人数,剧本类型,匹配适配角色,标注角色特点,帮玩家快速选角,提升剧本杀体验。
  • 10个将YashanDB数据库应用于大数据场景的策略
  • 10个快速上手YashanDB的实用技巧
  • 2-SpringCloud-Consul服务注册与发现和分布式配置管理 - 实践
  • 链表 part01
  • 【易经系列】六二:直方大,不习无不利。
  • 必知!AI应用架构师设计智能数字身份验证系统的关键要素
  • C++流类库 文件流操作 - 实践
  • 开题报告 网上书店管理系统的设计与实现
  • 【总和拆分 + 双变量遍历】LCR_012_寻找数组的中心下标
  • clawdbot对接kimi,moltbot对接kimi,clawdbot对接国产大模型,moltbot对接过程大模型
  • 开题报告 简易移动端在线考试系统的设计与实现
  • 开题报告 空气质量数据分析系统的设计与实现
  • 1.31假期记录
  • 深度探究提示工程架构师的提示工程文档规范体系应用