C++函数的三种形参类型理解

C++函数参数的传递

参数时调用函数与被调用函数之间交换数据的通道。函数定义首部的参数称为形式参数(简称形参),调用函数时使用的参数称为实际参数。
实际参数必须与形式参数在类型,个数,位置上相对应。函数被调用前,形参没有存储空间。函数被调用时,系统建立与实参对应的形参存储空间,函数通过形参与实参进行通信,完成操作。函数执行完毕,系统收回形参的临时存储空间。这个过程称为参数传递或参数的虚实结合。
C++有值传递(值调用),指针传递(指针调用)和引用传递(引用调用)等3种参数传递机制。

运行实例代码加深了解

#include<iostream>
using namespace std;

void swapPoint(int*a, int*b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
	cout << "swapPoint(int*a, int*b)  a:" << a << " b:" << b << endl;
}
void swapQuote(int&a, int&b)
{
	int temp = a;
	a = b;
	b = temp;
	cout << "swapQuote(int&a, int&b)  a:" << a << " b:" << b << endl;
}
void swap(int a, int b)
{
	int temp = a;
	a = b;
	b = temp;
	cout << "swap(int a, int b)  a:" << a << " b:" << b << endl;
}
int main()
{
	int x = 3;
	int y = 7;
	cout << "原本的x:" << x << " " << "原本的y:" << y << endl;
	swapPoint(&x, &y);
	cout << "swapPoint(int*a, int*b)指针传参:x:" << x << " " << "y:" << y << "    x的地址: "<<&x<<" y的地址: "<<&y<<endl<<endl;
	swapQuote(x, y);
	cout << "swapQuote(int&a, int&b)引用传参:x:" << x << " " << "y:" <<y << "    x的地址: " << &x << " y的地址: " << &y <<endl<< endl;
	swap(x, y);
	cout << "swap(int a, int b)一般传参:x:" << x << " " << "y:"<<y << "    x的地址: " << &x << " y的地址: " << &y <<endl<< endl;
}

在这里插入图片描述
当形参为指针类型时,被调用函数可以在函数体内通过形参指针来间接访问实参地址所指的对象。
当形参为引用类型时,形参名作为引用绑定于实际参数识别的对象上,执行函数时,对形参的操作就是对实参对象的操作。执行结束后,撤销引用绑定。

简单理解(当然可能不科学):就是比如你在村里找去小明家【对象】拿3个鸡蛋【实际数值】,你知道他家地址【对象的地址】可以可以去拿,知道他的名字【对象名】也可以去到(不重名的情况),但是你只知道3个鸡蛋【实际数值】就没办法拿了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值