c++函数传参的三总方式及实参与形参间的关系

c++中函数传参有三种方式分别为:

在这里插入图片描述

1.传值调用

直接将变量名传入函数,然后用对应的变量类型接收,如myswap1.
但是在这种传递方式中,形参的变化不会对实参产生影响(本质上是因为形参已经是独立的临时变量,和实参已经毫无关心,在myswap1运行结束后形参变量就被释放)。

2.传址调用

传址调用其实就是传指针(指针就是地址),由于传入的是实参地址,所以形参本质上也是实参,(都是一个地址,指向的自然是一个变量),所以对形参的任何操作,实参也会跟着改变

3.引用做函数形参

引用就是给你的变量起个别名,实际与原变量都指向同一地址,不会再开辟空间,所以可以节省开销。对别名的操作自然也会改变实参

下面可以用一个数值互换代码来分别测试这三种情况:

#include<iostream>

using namespace std;

void myswap1(int x,int y)
{
	int temp = 0;
	temp = x;
	x = y;
	y = temp;
}

void myswap2(int & x, int &y)
{
	int temp;
	temp = x;
	x = y;
	y = temp;
}

void myswap3(int * x, int*y)
{
	int temp;
	temp = *x;
	*x = *y;
	*y = temp;
}

void test01()
{
	int a = 3;
	int b = 5;
	cout << a << " " << b << endl;

	myswap1(a, b);
	cout << "sawp1: " << a << " " << b << endl;
}

void test02()
{
	int a = 3;
	int b = 5;
	cout << a << " " << b << endl;

	myswap2(a, b);
	cout << "sawp2: " << a << " " << b << endl;
}

void test03()
{
	int a = 3;
	int b = 5;
	cout << a << " " << b << endl;

	int *p1 = &a;
	int *p2 = &b;
	myswap3(p1, p2);
	cout << "sawp3: " << a << " " << b << endl;
}

int main()
{

	test01();
	test02();
	test03();

	system("pause");
	return 0;
}

运行结果如图:

在这里插入图片描述
有任何疑问欢迎在评论区讨论

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值