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

C++通过引用实现变量交换时两变量最终值相同问题求助

问题排查与解决方案

核心问题根源

问题出在main函数中引用变量的声明语法错误:

int& ref_a = a, ref_b = b;

C++的声明语法中,修饰符&仅作用于紧随它的单个声明变量,不会作用于同一行逗号分隔的后续变量,上述代码实际等价于:

int& ref_a = a; // ref_a是a的引用
int ref_b = b;  // ref_b是独立的普通int变量,仅初始值等于b,不是b的引用

调用RefSwap时,实际传入的是a的别名ref_a和独立变量ref_b,函数交换的是a和ref_b的值,原始变量b全程没有被修改,仍然保留初始值10,因此最终输出10 10,和运行结果一致。

修正方案

可任选以下任意一种方案修改代码:

  • 方案1:给同一行声明的所有引用都加上&修饰符
    int &ref_a = a, &ref_b = b;
    
  • 方案2:分开声明引用变量,避免语法歧义
    int& ref_a = a;
    int& ref_b = b;
    
  • 方案3:不需要额外定义中间引用变量,直接把a、b传入交换函数即可(函数形参本身就是引用类型,直接传变量会自动绑定引用)
    // 删掉ref_a、ref_b的定义行,直接调用
    RefSwap(a, b);
    

修改后重新运行代码,即可得到预期输出10 3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:06:05