You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何程序执行后变量a的值仍为7?C++函数传参问题咨询

为什么变量a的值仍为7?

核心原因是C++的传值调用和传引用调用的区别,咱们一步步拆解:

1. 函数参数的传递规则

看test函数的参数定义:

void test(int m , int &n)
  • 第一个参数int m是传值调用:调用test(a,b)时,程序会把实参a的值(7)复制一份给形参m。m和a是完全独立的两个变量,占用不同内存空间,修改m不会影响a。
  • 第二个参数int &n是传引用调用:形参n是实参b的「别名」,直接指向b的内存地址。对n的任何修改,本质都是直接修改b内存里的值。

2. 代码执行的完整流程

  • 在main函数里,初始化a=7、b=12。
  • 调用test(a,b):
    • 形参m拿到a的副本,值为7;n绑定到b,当前值是12。
    • 执行n = n - 2*m:计算得12 - 2*7 = -2,这会直接修改b的值,此时b变成-2。
    • 执行m = 2*m:把m的值改成14,但这只是修改了m这个副本,和a没有任何关系,a的内存里还是原来的7。
  • 回到main函数输出,a的值依旧是7,b的值变成了-2。

内容的提问来源于stack exchange,提问作者frnendy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 13:45:44