当前位置:   article > 正文

【C++程序设计】传值、传地址、传引用以及代码实例

传引用

目录

一、含义和理解:

通俗易懂地理解传值和传引用:

二、实例:

1.传引用:

代码:

输出结果为:

内存存储说明:

2.传值:

代码:

运行结果:

​ 内存说明:

三、总结:

传值只是传对象的值,不传地址,所以实参改变不会影响原形参的值! 

传引用是把对象所在的地址传过去(即传了整个对象),所以实参和形参指向同一地址,任何一方改变地址中的值,另一方的值也会改变!


一、含义和理解:

  • 传值是实参的值传递给形参;

  • 传地址是传的实参指向的首地址;

  • 传引用是传实参指向的对象.

注意:传地址和传引用有稍许差别,就是传的首地址不一定就是一个对象,有可能对象占的地址空间大,则这样就只能是指向一个首地址,并不能知道对象的长度(如指向的对象是一个数组对象,传地址就是指向了这个数组对象的首地址);而传引用可以表示指向这个完整的对象。

(触类旁通:指针和引用,应该和传地址和传引用一样,是有区别的。)


通俗易懂地理解传值和传引用:

传值:类似于我把自己的文件复制一份传给你,你拿到的是复印件,这时候你对你手里的复印件进行编写或者修改等操作,都不会影响我手中原文件,这就是传值的含义,只是把对象的值复制一份给你,你对你手里的对象怎么操作无关于我的原对象。

传引用:相当于我把我手中的文件与你共享了一份,你和我都可以打开和编辑这同一份文件,这时候你如果对这个文件进行修改,那我看见的这份文件也是修改之后的!


二、实例:

1.传引用:

代码:

  1. #include "pch.h"
  2. #include <iostream>
  3. using namespace std;
  4. void swap(int&, int&);//传引用
  5. int main()
  6. {
  7. int a = 5, b = 10;
  8. cout << "a=" << a << ",b=" << b << endl;//输出当前a,b的值
  9. swap(a, b); //调用swap函数
  10. cout << "after swap:a=" << a << ",b=" << b << endl;//输出调用swap之后的a,b值
  11. //return 0; //return语句用来结束循环,或返回一个函数的值。return 0 表示成功完成本函数。
  12. }
  13. void swap(int&x, int&y)//传引用:将参数a=5,b=10的引用传给x=5,y=10
  14. {
  15. int temp;
  16. temp = x;//将x=5传引用给temp,则temp=5
  17. x = y; //将y=10传引用给x,则x=10;
  18. y = temp; //将temp=5传引用给y,则y=5.
  19. }

输出结果为:

内存存储说明:

2.传值:

代码:

  1. #include "pch.h"
  2. #include <iostream>
  3. using namespace std;
  4. void swap(int, int);//传值
  5. int main()
  6. {
  7. int a = 5, b = 10;
  8. cout << "a=" << a << ",b=" << b << endl;//输出当前a,b的值
  9. swap(a, b); //调用swap函数
  10. cout << "after swap:a=" << a << ",b=" << b << endl;//输出调用swap之后的a,b值
  11. //return 0; //return语句用来结束循环,或返回一个函数的值。return 0 表示成功完成本函数。
  12. }
  13. void swap(int x, int y)//传值:将参数a=5,b=10的值传给x=5,y=10
  14. {
  15. int temp;
  16. temp = x;//将x=5的值传给temp,则temp=5
  17. x = y; //将y=10的值传给x,则x=10;
  18. y = temp; //将temp=5的值传给y,则y=5.
  19. }

运行结果:

 内存说明:

 

三、总结:

传值只是传对象的值,不传地址,所以实参改变不会影响原形参的值! 

传引用是把对象所在的地址传过去(即传了整个对象),所以实参和形参指向同一地址,任何一方改变地址中的值,另一方的值也会改变!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码艺术创作者/article/detail/63110
推荐阅读
相关标签
  

闽ICP备14008679号