c++学习笔记1.2函数参数传递方式

参数传递的定义

在C++语言中,使用函数调用所给出的实参(实际参数,actual arguments)向函数定义所给出的形参(形式参数,formal arguments)设置初始的过程叫做参数传递(argument passing)。

参数传递的方式

通常来说在C++中调用函数时有三种参数传递方式:
(1)传值调用。
(2)传址调用(传指针)。
(3)引用传递。
总体上参数传递可以分为两类,由形参的类别决定:值调用(call by value)和引用调用(call by reference)。除了定义为引用类型的形参外,其他类型的都是值调用。指针的传递也是值的传递,只不过传递的值是地址。

值传递

按照值传递的方式进行参数的传递的时候,实参被复制了一份。函数体内修改参数变量时修改的是实参的一份副本,而实参本身是没有改变的,所以如果想要通过函数改变对应实参的值的话,不能使用值传递这种方法,使用指针或者引用可以达到对应的目的。

参考示例一:值传递

#include <iostream>
using namespace std;

int main()
{
	void swap(int, int);//声明交换函数
	int i = 3, j = 5;
	swap(i, j);			//调用交换函数swap
	cout << i << " " << j << endl;
	return 0;
}
void swap(int a, int b)
{
	int temp;
	temp = a;			//对于参数a,b进行交换
	a = b;
	b = temp;
}

运行结果为,
运行结果
可以看出,函数的值传递方式,只是将实参i,j的值传入对应的形参a,b中去,而在swap函数中只交换了a与b的值,并没有对于实参i,j进行操作。
如果要实现交换,只能使用指针传递

参考示例二:指针传递

#include <iostream>
using namespace std;

int main()
{
	void swap(int *, int *);//声明交换函数
	int i = 3, j = 5;
	swap(&i, &j);			//实参是变量的地址
	cout << i << " " << j << endl;
	return 0;
}
void swap(int *a, int *b)	//形参是指针变量
{
	int temp;
	temp = *a;			//对于参数*a,*b地址中的数据进行交换
	*a = *b;
	*b = temp;
}

运行结果为,
运行结果
可以发现通过指针作为形参,可以进行修改。

引用传递

根据上篇文章我们对于引用的理解,可以知道引用只是一个外号。使用引用传递,修改的形参就是实参,他们占用相同的内存空间。

参考示例三:引用传递

#include <iostream>
using namespace std;

int main()
{
	void swap(int &, int &);
	int i = 3, j = 5;
	swap(i, j);		
	cout << i << " " << j << endl;
	return 0;
}
void swap(int &a, int &b)	//形参是引用类型
{
	int temp;
	temp = a;			
	a = b;
	b = temp;
}

运行结果为,
运行结果
可以看出引用传递实现了交换功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值