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

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

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

相关推荐
Navigator_Z15 小时前
LeetCode //C - 1089. Duplicate Zeros
c语言·算法·leetcode
在繁华处15 小时前
Java从零到熟练(四):面向对象基础
java·开发语言
Unbelievabletobe15 小时前
解决了股票api接口盘后数据更新慢的问题
大数据·开发语言·python
cany100015 小时前
C++ -- 可变参数模板
c++
不会C语言的男孩16 小时前
C++ Primer 第2章:变量和基本类型
开发语言·c++
在繁华处16 小时前
Java从零到熟练(三):流程控制
java·开发语言·python
云泽80817 小时前
C++ 可调用对象通关指南:深度解析 Lambda 表达式、function 包装器与 bind 绑定器
开发语言·c++·算法
wlsh1518 小时前
Go 迭代器
算法
Tri_Function18 小时前
简单图论大学习
c++
语戚18 小时前
力扣 3161. 块放置查询:线段树解法(Java 实现)
java·算法·leetcode·面试·线段树·力扣·