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

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

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

相关推荐
MinterFusion2 小时前
如何使用Qt5在窗口中显示矩形(v0.1.3)(下)
开发语言·qt·编程·明德融创·窗口中绘制矩形
ximu_polaris2 小时前
设计模式(C++)-创造型模式-建造者模式
c++·设计模式·建造者模式
wengqidaifeng2 小时前
数据结构:排序(上)---基础排序算法详解
数据结构·算法·排序算法
Mr.E52 小时前
odoo18 关闭搜索框点击自动弹出下拉框
开发语言·前端·javascript·odoo·owl·odoo18
xyq20242 小时前
MongoDB GridFS
开发语言
TIEM_692 小时前
C++string接口(下)|修改器、字符串操作、成员常量、非成员函数重载
开发语言·c++
Zlssszls2 小时前
机器人马拉松的第二年,比的是其背后的隐形赛场:具身训练工具链
算法·机器人
shylyly_2 小时前
sizeof 和 strlen的理解与区分
c语言·算法·strlen·sizeof
AbandonForce2 小时前
C++ 多态(多态定义 多态应用 多态底层||final override关键字||抽象类)
java·开发语言·c++