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

为什么C++中的引用会修改它所引用的数组元素?

问题解答:C++引用修改原数组元素的原因

你对C++引用的核心定义存在误解,引用并不是“独立存储了原对象值的新变量”,而是原对象的别名,可以通俗理解为给原内存块起了个新外号。

举个生活化的例子:你本名李明,同事给你起了个外号叫“小明”,别人给“小明”递一杯水,接水的人本质还是你李明。对应到代码逻辑里,所有对引用的操作,等价于直接操作它绑定的原对象。

你的代码逐行逻辑说明

#include <iostream>
int main() {
    int arr[4] = { 0,0,0,0 };
    arr[0] = 1; // 数组第一个元素的内存块写入数值1

    int& reference = arr[0]; // 给arr[0]对应的内存块绑定别名reference,两者指向完全相同的内存地址
    reference = 2; // 等价于直接执行 arr[0] = 2;

    std::cout << arr[0]; // 最终输出结果为2
}

补充核心规则

  • 引用定义时必须绑定到已存在的对象,无法后续重新绑定到其他对象
  • 引用本身不占用独立的内存存储(底层实现可能用指针封装,但上层语法层面完全屏蔽了这个细节)
  • 如果不需要修改原对象,建议定义为const引用:const int& reference = arr[0];,此时尝试修改reference的值会被编译器直接拦截报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:09:04