C++ Primer 学习笔记(4): 参数传递

本文详细解析了参数传递在C++中的两种主要方式:值传递和引用传递。重点讨论了引用参数的使用场景,如交换变量值、向主调函数返回额外结果、传递大型对象等。此外,文章还介绍了如何通过引用参数避免大型类对象的拷贝,以及引用和指针参数之间的区别。同时,文章阐述了数组参数传递的方法,包括提供数组长度的额外参数、使用数组引用以及使用抽象容器类型作为参数等。最后,文章还提到了函数指针的应用,包括声明、初始化和调用函数指针,以及函数指针的数组和作为参数的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参数传递
参数传递有两种方式,即值传递和引用传递。
按值传递不是在所有的情况下都适合。不适合的情况包括:
(1)当大型的类对象必须作为参数传递时。由于拷贝对象带来的开销会过大。
(2)当实参的值必须被修改时。

1、引用参数
1.1 使用引用参数的场合

(1)必须修改实参的值而避免使用指针的时候。
例如交换两个变量的值:


(2) 向主调函数返回额外的结果,很显而易见。
(3) 向函数传递大型对象。

Tip: 若希望用引用参数以避免拷贝用作实参的大型类对象,同时又希望防止函数修改实参的值。如果引用参数不希望在被调用的函数内部被修改,那么把参数生命为const型的引用是个不错的办法。
int foo (const X& xx){...}
1.2 指针的引用
主要用于要修改指针本身的时候

1.3 引用和指针参数的关系
引用必须被初始化为指向一个对象(不可以用常数作引用参数的实参),一旦初始化了,它就不能再指向其他对象。指针可以指向一系列不同的对象也可以什么都不指向。
一个Matrix对象重载加法运算符实现的例子:

 

 

 

2 数组参数
数组的长度与参数声明无关。下面三个声明是等价的:

 

 

问题:传递数组给函数时使其知道它的长度
方法一:提供一个含有数组长度的额外参数,很常用

 

方法二:将参数声明为数组的引用。当参数是一个数组的类型的引用时,数组长度成为参数和实参类型的一部分,编译器检查数组实参的长度与在函数参数类型中指定的长度是否匹配。

 

 

方法三:使用抽象容器类型作为参数, vector<int> vec;

3 函数指针
声明、初始化、调用函数指针:

 

 

 

函数指针的数组:

函数指针作参数:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值