这两种有什么区别啊
特别是加了的那种 表达什么意思啊(不好意思特殊符号它不允许我打出来)
2条回答 默认 最新
- P2441M 2023-01-26 19:45关注
加了&符号的是引用参数,没加的是传值参数。
区别是,如果是传值参数,会克隆实参并传给形参。所以,在函数内部对形参进行更改并不会影响外部的实参。如果是引用参数,实际上形参就是实参的别名,它们公用同一块内存地址,所以在函数内部对形参的更改也会影响到外部的实参。
举个典型的例子,写一个
Swap
函数,用来交换两个数。
如果这样写,是没有效果的,因为在调用Swap
函数时传入的是num1
和num2
的副本:void Swap(int a, int b) { int temp = a; a = b; b = a } int main() { int num1 = 0, num2 = 1; Swap(num1, num2); return 0; }
但是如果这样写,就有效了,因为形参
a
和b
与实参num1
和num2
指向用一块内存,在Swap
中做的更改也会影响到num1
和num2
:void Swap(int &a, int &b) // 使用引用参数 { int temp = a; a = b; b = a } int main() { int num1 = 0, num2 = 1; Swap(num1, num2); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 怎么改成循环输入删除(语言-c语言)
- ¥15 安卓C读取/dev/fastpipe屏幕像素数据
- ¥15 pyqt5tools安装失败
- ¥15 mmdetection
- ¥15 nginx代理报502的错误
- ¥100 当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧
- ¥15 图示五个参数的模型校正是用什么方法做出来的。如何建立其他模型
- ¥100 描述一下元器件的基本功能,pcba板的基本原理
- ¥15 STM32无法向设备写入固件
- ¥15 使用ESP8266连接阿里云出现问题