DS-1 传值与传引用

一、本质

  1. 传值(Pass by Value)拷贝一份给别人,别人改复印件,原件不动。

  2. 传引用(Pass by Reference)直接给原件,别人改的就是你的原件。

二、代码对比(C++)

1. 传值

cpp 复制代码
void func(int x) {  // x 是 a 的复制品
    x = 100;        // 只改复制品
}

int main() {
    int a = 10;
    func(a);        // 传值
    cout << a;      // 输出:10(原值没变!)
}

2. 传引用

cpp 复制代码
void func(int& x) { // x 就是 a 本身(别名)
    x = 100;        // 直接改 a
}

int main() {
    int a = 10;
    func(a);        // 传引用
    cout << a;      // 输出:100(原值被改了!)
}

三、区别

对比点 传值 传引用
是否复制数据 会复制,耗内存、速度慢 不复制,省内存、速度极快
能否修改原值 不能改,安全 能改,灵活
适用场景 简单小数据、不想被改 大数据、需要修改、提高性能

四、应用场景

  1. 数据小 (int、char)→ 传值(安全、简单)

  2. 数据大 (数组、对象、字符串)→ 传引用(快、省内存)

  3. 想在函数里修改变量传引用

  4. 不想被修改但要高效const 传引用(最常用!)

cpp 复制代码
// 不修改数据,又要高效 → 万能写法
void func(const int& x) { ... }
相关推荐
jinyuya3 小时前
[UVM] uvm_reg学习
笔记
magic_now3 小时前
FAT文件系统:嵌入式设备的极简选择
笔记·嵌入式硬件
Shadow(⊙o⊙)4 小时前
初识Qt+经典方式实现hello world!的交互
开发语言·c++·后端·qt·学习
星夜夏空994 小时前
STM32单片机学习(5) —— STM32的一些名词解释
stm32·单片机·学习
拾2144 小时前
小论文中使用他人文章图表的权限获取
学习
GEO从入门到精通4 小时前
GEO课程的学习路径应该怎么规划?
人工智能·学习
Hammer_Hans4 小时前
DFT笔记45
java·jvm·笔记
handler014 小时前
速通蓝桥杯省一:二分算法
c语言·开发语言·c++·笔记·算法·职场和发展·蓝桥杯
炽烈小老头4 小时前
【 每天学习一点算法 2026/05/08】最小覆盖子串
学习·算法
南境十里·墨染春水5 小时前
linux学习进展 I/O复用函数初步
linux·运维·学习