值传递和引用传递

引用:变量数据类型
语法:&引用名 = 已声明的变量名
用引用作为函数参数的实现引用传递
函数参数传递:
值传递(单向值拷贝,只能将实参的值拷贝给形参, 实参与形参各自独占内存)
引用传递 :实现的是引用传递(形参与实参共用内存), 实参与形参是同一个对象

值传递用于读操作
引用传递用于写操作
引用类型:指针, 数组, 引用类型


指针版本

交换2个变量的值
@param pa, int*, 指针
@param pb, int*, 指针

void swap(int* pa,int* pb){int t;t = *pa; *pa = *pb; *pb = t;
}

数组版本

交换2个变量的值
@param arr, int[], 数组

void swap(int arr[]){int t;t = arr[0];arr[0] = arr[1];arr[1] = t;
}

引用版本

交换2个变量的值
参数绑定: &ra = num1, &rb = num2;
引用实质是变量的另一个合法名称
@param ra, int&, 引用类型
@param rb, int&, 引用类型

void swap(int &ra, int &rb){int t;t = ra; ra = rb; rb = t;
}

分配内存

指针版本:写操作, 引用传递
实参用该类型变量的地址
参数绑定: p = &pnum;
@param p, 类型为int**, 指针的指针(二级指针)

void allocMemory(int* *p){//p= (int*)malloc(sizeof(int)*10);*p = new int[10];//为pnum指针指定的空间分配内存//赋值操作:(*p)[0] = 1;
}

引用版本:写操作, 引用传递
实参用该类型的变量名
参数绑定: &p = pnum
@param p:int*&, 指针的引用

void allocMemory(int* &p){p = new int[10];//赋值操作:p[0] = 1;
}

主函数

int main(){int* pnum;//调用指针版本,实参用该类型变量的地址allocMemory(&pnum);//调用引用版本,实参用该类型的变量名allocMemory(pnum);pnum[0] = 2021;//检验内存是否分配成功cout << pnum[0] << endl;int num1, num2;//int num[2];cin >> num1 >> num2;//cin >> num[0] >> num[1];//调用指针版本,实参用该类型变量的地址swap(&num1, &num2);//调用引用版本,实参用该类型的变量名swap(num1, num2);//swap(num);//实参数组名cout << num1 << endl;cout << num2 << endl;//cout << num[0] << endl;//cout << num[1] << endl;return 0;
}

C++:值传递和引用传递相关推荐

  1. Java中的值传递和引用传递

    当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?      答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为 ...

  2. Java值传递与引用传递

    Java面试题: 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答案基本上是:值传递 说明:得出这种结论的前提必须是&qu ...

  3. python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递

    python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...

  4. Stack Overflow上188万浏览量的提问:Java 到底是值传递还是引用传递?

    来自:沉默王二 在逛 Stack Overflow 的时候,发现了一些访问量像阿尔卑斯山一样高的问题,比如说这个:Java 到底是值传递还是引用传递?访问量足足有 188万+,这不得了啊!说明有很多很 ...

  5. java 引用传递_详解java的值传递、地址传递、引用传递

    详解java的值传递.地址传递.引用传递 一直来觉得对值传递和地址传递了解的很清楚,刚才在开源中国上看到一篇帖子介绍了java中的值传递和地址传递,看完后感受颇深.下边总结下以便更容易理解. 按照以前 ...

  6. Java中传参数--值传递和引用传递

    ** Java中传参数–值传递和引用传递 ** 在Java中,传参数分为值传递和引用传递. 在Java中的数据类型分为两大类:一类是引用类型,也叫类类型(除了String以外的所有复合数据类型,包括数 ...

  7. JavaScript强化教程——对象的值传递和引用传递

    2019独角兽企业重金招聘Python工程师标准>>> 本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程--对象的值传递和引用传递 func ...

  8. list修改元素的值_Python 到底是值传递还是引用传递

    我们平时写的 Python 程序中充斥着大量的函数,包括系统自带函数和自定义函数,当我们调用函数时直接将参数传递进去然后坐等接收返回值即可,简直不要太好用.那么你知道函数的参数是怎么传递的么,是值传递 ...

  9. php值传递和java_Java的值传递和引用传递

    形参与实参 我们先来重温一组语法: 形参:方法被调用时需要传递进来的参数,如:func(int a)中的a,它只有在func被调用期间a才有意义,也就是会被分配内存空间,在方法func执行完成后,a就 ...

  10. Python中值传递和引用传递区别

    原文:http://blog.csdn.net/xuqiaobo/article/details/72236539 举例,函数参数如果是dic,都不需要返回值,原值就被改变了 def aa(dic): ...

最新文章

  1. 送Datawhale限量红包封面啦!
  2. usb传输标准和接口标准
  3. cmd打开java文件夹_Java用CMD打开指定文件和文件夹
  4. 莫比乌斯反演与最大公约数
  5. Shell基础学习(六) 流程控制
  6. 使用 Chrome Timeline 来优化页面性能
  7. 133. Clone Graph
  8. 如何快速下载CentOS7镜像
  9. 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)
  10. <读书笔记> Thinking in python (Python 设计模式) 3. Proxy and State模式
  11. arduino cc3000 php,【arduino】新手求助, 想问一下关於CC3000设置的问题
  12. RoboBee和RoboFly领衔微型昆虫机器人:从“上天入海”到“挣脱束缚”
  13. 兄弟连高洛峰php教程下载_兄弟连经典PHP项目视频教程在线学习与下载-兄弟连高洛峰...
  14. 冰点下载器手机版apk_冰点下载器安卓版下载
  15. Photoshop CS2 视频教程-PS自定义形状工具(转)
  16. 【JavaScript设计模式】(一)
  17. LabVIEW的编程-程序框图入门笔记
  18. 解决thinkpad sl410 evc windows7硬盘安装ubuntu12.04以后,windows 无线出现断开网速慢等问题
  19. 【labelme格式json转为labelimg格式的xml(VOC)】
  20. C语言运算符的优先级和结合

热门文章

  1. UVA-3.8-循环小数-202
  2. 用什么软件测试家里网速突然变慢,这5招可以让家里的WIFI网速瞬间变快!
  3. java面向对象三大特征及五大原则
  4. Spring boot 启动错误:Could not resolve placeholder
  5. 为什么次世代游戏建模受欢迎? 建模行业真实现状,早知道少吃亏!
  6. SLF4j 和 common-logging
  7. matlab二次多项式插值,MATLAB应用——多项式与插值函数
  8. NoClassDefFoundError: io/vov/vitamio/LibsChecker
  9. 国民技术对比STM移植参考------N32G45X系列对比STM32F10X
  10. 刷题记录(2023.3.14 - 2023.3.18)