值传递与引用传递

1、值传递

调用时,将实参的值传递对应的形参,即为值传递。

传递的是原始值的一个副本

由于形参有自己独立的存储空间,又作为函数的局部变量使用,因此在函数中对任何形参值得修改都不会改变实参变量的值。 

2、引用传递

引用传递是一种特殊的变量,它被认为是一个变量的别名。当定义一个引用时,其实是为目标变量起一个别名,引用并不分配独立的内存空间,它与目标变量公用其内存空间。

使用引用参数可以直接操作实参变量,从而能够实现通过修改形参的值而达到修改对应实参值得目的。

 例:

#include <iostream>

using namespace std;

void swap1(int x, int y) //定义形参
{
	int tamp = x;
	x = y;
	y = tamp;
	cout << "swap1 函数中x值为: " << x << "  " << "swap1 函数中y值为: " << y;
}
void swap2(int &x, int &y)// 定义引用参数
{
	int tamp = x;
	x = y;
	y = tamp;
	cout << "swap1 函数中x值为: " << x << "  " << "swap1 函数中y值为: " << y;
}


int main()
{
	int a = 1, b = 2;
	swap1(a, b);
	cout << endl << a << "  " << b << endl;
	//输出后还是1,2


	int c = 1,d = 2;
	swap2(c,d);
	cout << endl << c << "  " << d << endl;
	//输出后变成了2,1

	
	return 0;
}

①对于swap1:

函数Swap1()被调用前,实参a和b有自己的存储空间,并且有自己的初始值。

当调用函数Swap()时,为形参(即函数的参数)x和y分配存储空间,并将a和b的值复制过来,

函数执行过程中,将x和y的值进行交换,当函数执行结束之后,x和y所占用的存储空间将被释放,

这种传递的方式,并不会对实参a和b的值产生影响,此即为值传递。

②对于swap2:

当函数未调用之c和d的值分别为1和2。

当函数调用过程中,形参的值被c=2,d=1;函数调用结束之后,实参的值被改变。

即函数调用时,作为形参的引用变量并不分配新的内存空间,它将作为实参变量的别名与其共用内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值