c++笔记_参数传递

本文详细介绍了C++中的参数传递方式,包括传值参数、指针形参、传引用参数以及const形参和实参的使用。特别强调了引用如何避免拷贝提高效率,以及在处理数组时的各种策略,如通过数组长度、标准库规范和显示传递大小。此外,还讨论了使用常量引用的重要性。
摘要由CSDN通过智能技术生成


前言

每次调用函数时都会重新创建它的形参,并用传入的实参对形参进行初始化。

当形参是引用类型时,我们说它对应的实参被引用传递或者函数被传引用调用。和其他引用一样,引用形参也是它绑定的对象的别名:也就是说,引用形参是它对应的实参别名。

当实参的值被拷贝给形参时,形参和实参是两个相互独立的对象。我们说这样的实参被值传递或者函数被传值调用

一、传值参数

初始化一个非引用类型的变量时,初始值被拷贝给变量。此时,变量的改变不会影响初始值:

int n = 0;			//int类型的初始变量
int i = n;			//i是n的值的副本
i = 42;				//i的值改变;n的值不变

传值参数,函数对形参做的所有操作都不会影响实参:

#include<iostream>
void sum(int i)
{
   
	int b = i--;
	std::cout<<b<<std::endl;
}

尽管sum函数改变了i的值,但是这个改动不会影响传入sum的实参。调用sum(i)不会改变i的值。

二、指针形参

指针的行为和其他非引用类型一样。当执行指针拷贝操作时,拷贝的是指针的值。拷贝之后,两个指针是不同的指针。因为指针使我们可以间接地访问它所指的对象,所以通过指针可以修改它所指对象的值:

int n =0, i=42;
int *p =&n, *q=&i;			//p指向n;q指向i
*p =42;						//n的值改变;p不变
p=q;						//p现在指向了i;但是i和n的值不变

指针形参的行为与之类似:

//该函数接受一个指针,然后将指针所指的位置为0
void reset(int *ip)
{
   
	*ip=0;				//改变指针ip所指对象的值
	ip=0;				//只改变了ip的局部拷贝,实参未被改变
}

调用reset函数之后,实参所指的对象被置为0,但是实参本身并没有改变:

int i = 42;
reset(&i);					//改变i的值而非i的地址
cout<<"i="<<i<<endl;		//输出i=0

三、传引用参数

引用的操作实际上是作用在引用所引的对象上:

int n =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值