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

目录

一、含义和理解:

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

二、实例:

1.传引用:

代码:

输出结果为:

内存存储说明:

2.传值:

代码:

运行结果:

扫描二维码关注公众号,回复: 11983792 查看本文章

​ 内存说明:

三、总结:

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

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


一、含义和理解:

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

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

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

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

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


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

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

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


二、实例:

1.传引用:

代码:

#include "pch.h"
#include <iostream>
using namespace std;

void swap(int&, int&);//传引用

int main()
{
	int a = 5, b = 10;
	cout << "a=" << a << ",b=" << b << endl;//输出当前a,b的值
	swap(a, b);	//调用swap函数
	cout << "after swap:a=" << a << ",b=" << b << endl;//输出调用swap之后的a,b值
	//return 0;  //return语句用来结束循环,或返回一个函数的值。return 0 表示成功完成本函数。
}
void swap(int&x, int&y)//传引用:将参数a=5,b=10的引用传给x=5,y=10
{
	int temp;
	temp = x;//将x=5传引用给temp,则temp=5
	x = y;	//将y=10传引用给x,则x=10;
	y = temp; //将temp=5传引用给y,则y=5.
}

输出结果为:

内存存储说明:

2.传值:

代码:

#include "pch.h"
#include <iostream>
using namespace std;


void swap(int, int);//传值

int main()
{
	int a = 5, b = 10;
	cout << "a=" << a << ",b=" << b << endl;//输出当前a,b的值
	swap(a, b);	//调用swap函数
	cout << "after swap:a=" << a << ",b=" << b << endl;//输出调用swap之后的a,b值
	//return 0;  //return语句用来结束循环,或返回一个函数的值。return 0 表示成功完成本函数。
}
void swap(int x, int y)//传值:将参数a=5,b=10的值传给x=5,y=10
{
	int temp;
	temp = x;//将x=5的值传给temp,则temp=5
	x = y;	//将y=10的值传给x,则x=10;
	y = temp; //将temp=5的值传给y,则y=5.
}

运行结果:

 内存说明:

三、总结:

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

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

猜你喜欢

转载自blog.csdn.net/Ginny97/article/details/108890231