C++里面引用参数和实参的区别

在 C++ 中,引用参数实参是函数调用过程中两个密切相关但本质不同的概念,核心区别如下:

1. 定义与本质

  • 实参(Actual Argument) :调用函数时传递给函数的原始数据(变量、常量或表达式),是函数实际操作的对象。
  • 引用参数(Reference Parameter) :函数定义时用 & 声明的参数,是实参的 **"别名"**(即另一个名字),与实参共享同一块内存。

2. 核心区别对比

维度 实参 引用参数
内存关系 拥有独立内存地址 不分配新内存,与实参共用地址
修改影响 值传递时修改不影响原实参 修改会直接改变原实参的值
传递开销 值传递时需拷贝数据(大对象慢) 无拷贝,直接绑定(效率高)
复制代码
#include <iostream>
using namespace std;

// 引用参数:x 是实参的别名
void changeValue(int &x) {
    x = 100; // 修改 x 等于修改原实参
}

int main() {
    int a = 10; // a 是实参
    changeValue(a); // 传递 a,x 绑定到 a
    cout << a; // 输出:100(原实参被修改)
    return 0;
}

4. 使用场景

  • 引用参数 :用于需要修改实参避免大对象拷贝(如类、数组)的场景。
  • 实参:是函数调用的 "输入数据",可以是变量、常量或表达式。

简单来说:实参是 "原始数据",引用参数是 "原始数据的别名"------ 改别名就是改原始数据。

相关推荐
c1s2d3n4cs9 小时前
Qt模仿nlohmann::json进行序列化和反序列化
开发语言·qt·json
如何原谅奋力过但无声9 小时前
【灵神高频面试题合集06-08】反转链表、快慢指针(环形链表/重排链表)、前后指针(删除链表/链表去重)
数据结构·python·算法·leetcode·链表
平行侠9 小时前
037插入排序 - 整理扑克牌的算法
数据结构·算法
ECT-OS-JiuHuaShan9 小时前
彻底定理化:从量子纠缠到量子代谢
数据库·人工智能·学习·算法·生活·量子计算
AiTop1009 小时前
Claude Code 推出 Agent View:命令行编程正式进入“多线程并发“时代
开发语言·人工智能·ai·aigc
jf加菲猫9 小时前
第21章 Qt WebEngine
开发语言·c++·qt·ui
爱喝雪碧的可乐10 小时前
2026 腾讯广告算法大赛优秀方案启示:行为条件化多模态自回归生成推荐摘要
算法·数据挖掘·回归·推荐系统·推荐算法
碧海银沙音频科技研究院10 小时前
音箱在加入 NN AEC(神经网络声学回声消除) 后出现反复重启问题解决
人工智能·深度学习·算法
码农-阿杰10 小时前
深入理解 synchronized 底层实现:从 HotSpot C++ 源码看对象锁与 Monitor 机制
开发语言·c++·
2401_8322981010 小时前
AI智能体监管落地,OpenClaw率先建立行业合规标准
开发语言