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) { ... }
相关推荐
DP DPharness6 小时前
ClearAI、记忆插件与普通笔记,三种让 Agent 记住的路数对比
笔记
爱倒腾的老唐6 小时前
0、元器件——电阻
学习
sunshine22 girl7 小时前
Java学习七 Java 项目实战2-注册业务
java·学习
piikee8 小时前
粤语初学入门:从粤拼、九声六调到开口,一个普通话母语者的练习笔记
笔记·粤语入门·怎么学习粤语
sunshine22 girl8 小时前
Java学习七 Java 项目实战1-项目创建和主页面搭建
java·开发语言·学习
传奇开心果编程9 小时前
【SwiftUI提高练中学】第8课 网络层架构:拦截器、重试、缓存与离线优先
学习·macos·ui·ios·swiftui
一条破秋裤9 小时前
内核驱动的意义与课程学习规划
学习
Bug收容所10 小时前
学习LangChain day1
学习·langchain·llm·agent
传奇开心果编程10 小时前
【现代声明式UI学与练】第7课 组件通信——父传子、子传父、跨层级通信、状态提升与 Context
学习·flutter·react native·ui·swiftui·android jetpack
Seraphina3610 小时前
SQL注入(二)盲注
网络·数据库·经验分享·笔记·sql