C++函数引用参数(&)的作用及程序输出结果答疑
在C++参数中使用&对程序运行的影响及代码计算解析
问题1:参数中使用&会改变程序运行方式吗?
会的。C++中函数参数前的&表示引用传递,它不会像值传递那样复制实参的副本,而是直接绑定到实参的内存地址上——也就是说,在函数内对引用参数的修改,会直接作用于原实参本身,这会彻底改变函数对外部变量的影响逻辑,和值传递的行为完全不同。
问题2:给定程序的输出计算
先一步步拆解代码执行流程:
- main函数初始状态:
a=1,b=5,c=30 - 调用
f(a, b):x是值传递,接收a的副本,初始值为1;y是引用传递,直接绑定main中的b,操作y等同于操作b
- 进入
f函数执行:x = x + y:x = 1 + 5 = 6(这里x是副本,不影响a)y = x + 2:y = 6 + 2 = 8——因为y是b的引用,所以main中的b现在被修改为8return (x + 5):返回6 + 5 = 11,main中的c被赋值为11
- 计算
a + b + c:1 + 8 + 11 = 20
所以程序输出是20,对应选项E。
你之前计算错误的原因是忽略了引用参数对实参的修改——你误以为b还是初始的5,但实际上函数f里对y的修改已经把main中的b改成8了,这就是引用传递带来的关键变化。
内容的提问来源于stack exchange,提问作者Harriet Lucy
相关产品推荐
相关产品推荐

