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. 使用场景

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

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

相关推荐
星空露珠5 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
码云数智-大飞5 小时前
PHP 接口开发规范:统一返回格式、异常处理与参数校验
开发语言·php
浮江雾6 小时前
Flutter第十七节-----路由管理(3)
android·开发语言·前端·javascript·flutter·入门
我不是懒洋洋6 小时前
从零实现一个分布式监控:Prometheus的核心设计
c++
admin and root6 小时前
「移动安全」安卓APP 反编译&frida脱壳技巧分享
android·开发语言·python·web安全·微信小程序·移动安全·攻防演练
踏月的造梦星球6 小时前
DM8 DSC 单机双实例部署
运维·开发语言·数据库
An_s6 小时前
c++对接pdfium(一)win系统篇
开发语言·c++
Zwarwolf6 小时前
Rust零散知识点项目汇总
开发语言·rust
-银雾鸢尾-6 小时前
C#中HashTable相关方法
开发语言·c#
众少成多积小致巨6 小时前
C++ 规范参考(上)
c++