转自:https://www.cnblogs.com/tanjuntao/p/8678927.html

还是看原文的格式更舒服些

一、值传递

这种传递方式中,实参和形参是两个不同的地址空间参数传递的实质是将原函数中变量的值,复制到被调用函数形参所在的存储空间中,这个形参的地址空间在函数执行完毕后,会被回收掉。整个被调用函数对形参的操作,只影响形参对应的地址空间,不影响原来函数中的变量的值,因为这两个不是同一个存储空间。

二、引用传递

这种传递方式中,形参是引用类型变量,其实是实参的一个别名,在被调用函数中,对引用变量的所有操作等价于对实参的操作。整个被调用函数对形参的操作执行完毕后,原先的实参的值也会发生改变

三、指针传递

这种传递方式中,实参是变量的地址{swap(&a,&b);},形参是指针类型的变量。在函数中对指针变量的操作,就是对实参(变量地址)所对应的变量的操作。整个被调用函数对形参的操作执行完毕后,原函数中的变量的值将会发生改变

代码如下:

  1. #include<iostream>

  2. using namespace std;

  3. //值传递 交换前a=1,b=2;交换后a=1,b=2;

  4. void swap(int a,int b){

  5. int temp=a;

  6. a=b;

  7. b=temp;

  8. }

  9. //引用传递 交换前a=1,b=2;交换后a=2,b=1;

  10. void swap(int &a,int &b){

  11. int temp=a;

  12. a=b;

  13. b=temp;

  14. }

  15. //指针传递 交换前a=1,b=2;交换后a=2,b=1;

  16. void swap1(int *a,int *b){

  17. int temp=*a;

  18. *a=*b;

  19. *b=temp;

  20. }

  21. //主函数

  22. int main(){

  23. int a=1;

  24. int b=2;

  25. cout<<"交换前"<<endl;

  26. cout<<"a="<<a<<endl;

  27. cout<<"b="<<b<<endl;

  28. swap(a,b);//值传递和引用传递

  29. swap1(&a,&b);//指针传递

  30. cout<<"交换后"<<endl;

  31. cout<<"a="<<a<<endl;

  32. cout<<"b="<<b<<endl;

  33. return 0;

  34. }

C\C++中函数参数的三种传递方式相关推荐

  1. c语言 函数参数传递 值传递,c语言中函数参数的三种传递方式——值传递、指针传递、引用传递...

    函数参数有三种传递方式值传递.指针传递.引用传递. 1.值传递 将已经初始化的变量值(或常量)传递到函数中. 例如: int func(int value) { int ret = value++; ...

  2. python中函数参数传递的三种方式_python中函数参数传递的几种方法

    转自  http://www.douban.com/note/13413855/ Python中函数参数的传递是通过"赋值"来传递的.但这条规则只回答了函数参数传递的"战 ...

  3. 项目1- C/C++语言中函数参数传递的三种方式

    <span style="font-size:18px;">问题及代码:</span> <span style="font-size:18p ...

  4. c/c++语言中函数参数传递的三种方式——徐吉平

    此篇为本人处女作,希望大家多多指正 1.这是c/c++中的函数传值方式,函数中只交换了 形参x,y的数值,而实参a,b的值并没有发生变化 #include <stdio.h> void m ...

  5. python中的函数参数主要有四种_python3中函数参数的四种简单用法

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  6. 第2周项目1c++语言中函数参数传递的三种方式

    copyright (t) 2017,烟台大学计算机学院*All rights reserved.*文件名称:1.cpp*作者:邵雪源*完成日期:2017年9月7日*版本号:v1.0 */ #incl ...

  7. c++语言定义排序函数,关于C++中定义比较函数的三种方法小结

    C++编程优与Pascal的原因之一是C++中存在STL(标准模板库).STL存在很多有用的方法. C++模板库中的许多方法都需要相关参数有序,例如Sort().显然,如果你想对一个集合进行排序,你必 ...

  8. 函数参数三种传递方式的区别

    函数参数三种传递方式的区别 问题提出: 1.当一个类的对象作为实参数传递时,使用值传递和引用传递有什么区别? 比如: DateType ExampleFun(CString &strFileN ...

  9. C语言中比较大小的函数模板,关于C++中定义比较函数的三种方法

    关于C++中定义比较函数的三种方法 C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之.以下,小编为大家介绍关于C++中定义比较函数的三种方法,供 ...

最新文章

  1. 0523-学习进度条
  2. Python正则表达式介绍 re.findall(pattern, str, flag=0)/re.I re.L re.M
  3. 如何做Teams Bot的测试覆盖
  4. linux输入qsub显示错误,linux – 使用qsub运行shellscript的’意外的文件结束’和’错误导入功能定义’错误...
  5. 中科院单细胞分析算法开发博士带你做单细胞转录组分析
  6. 还是畅通工程1233
  7. Haystack全文搜索
  8. VisualStudio2019 DLL生成并使用教程(C++)最详细Demo教程
  9. 同时生成 Release版和Debug版DLL的方法
  10. InDesign 教程,如何创建沉浸式文档?
  11. 【TFS 2017 CI/CD系列 - 01】-- Agent篇
  12. fclk if总线_技嘉B550手把手超频指南,光威血影为例
  13. java 将map转List对象
  14. 南开100题C语言(001-010)
  15. Java远程开关机(全过程)
  16. 高标准农田建设通则2014
  17. html内边距的顺序,html中内边距和外边距之间的区别是什么? - 收获啦
  18. 张勋说:关于棒磨机的历史 你了解多少?(图文)
  19. java中事务一致性学习及其解决方案
  20. 如何利用长尾关键词挖掘推广旅游业

热门文章

  1. 服务器发送二进制文件大小,如何从dotnet核心服务器向SignalR客户端发送二进制文件...
  2. 将腾讯视频Qlv格式转为MP4格式(亲测可用)
  3. iOS音频播放 (三):AudioFileStream
  4. 结合泛函极值_泛函极值与变分法
  5. APE-Gen:锚定肽-MHC集合生成器
  6. vue的基础练习实例
  7. Unity3D 设置帧频及显示FPS
  8. 风能matlab仿真_风能产量预测—深度学习项目
  9. Windows WiFi 热点共享 debug Android
  10. 安装gensim失败,各种方法未果,最后注意到 error: Microsoft Visual C++ 14.0 or greater is required,终于解决