news 2026/1/15 8:17:32

3.14 函数的参数传递

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3.14 函数的参数传递

3.14 函数的参数传递

函数的形参在函数定义时并不占用内存空间,只有当调用函数将实参传递给形参进行形实结合时才给形参分配内存空间,这个过程被称为参数传递。参数传递分为单向传递,双向传递。

即函数的形参在函数调用时分配内存(定义时仅声明类型 / 名称,无内存),实参→形参的传递过程叫「参数传递」,核心分为值传递(单向)和引用传递(双向,C++ 特有)

  1. 函数的参数在函数被调用时才分配形参的存储单元

    函数定义时,形参仅声明 “类型 + 名称”,不占用内存;只有函数被调用、实参传递给形参时,才为形参分配内存(栈区),完成「形实结合」。

  2. 实参可以是常量、变量或者表达式

    实参可以是常量(如5)、变量(如a)、表达式(如a+3*b),但表达式需能计算出确定值,且类型需与形参 “兼容”(允许隐式转换)。

  3. 实参类型必须与形参相符

    如果类型不相符,编译器首先会对实参进行类型转换,如果转换不成功编译器就会报错

    实参类型无需 “完全一致”,编译器会优先尝试隐式转换(比如int实参传给double形参,会自动转成 double);若转换失败(比如char*传给int),才会编译报错。

  4. 值传递是传递参数值,即单向传递

    此种方式仅仅能够满足函数计算所需要的数据用参数传递的方式给到了函数,函数拿到数据就开始计算,即使在函数体中对参数值有任何修改,也仅仅是修改了函数的形参,并不能改变主调函数的实参。

    本质:实参的 “值拷贝” 给形参(形参是独立变量,有自己的内存);
    特点:函数内修改形参,仅改变形参的内存值,实参完全不受影响(单向:实参→形参,形参无法反向影响实参);
    例:void func(int x) { x=10; },主函数调用func(a),a的值不会变。

  5. 引用传递可以实现双向传递

    用于解决需要将函数计算结果不惟一且需要将结果返回给主调函数的情况,return语句只能返回一个值,当有很多个值需要返回给主调函数就需要用到引用

    • 本质:形参是实参的 “别名”(形参和实参共享同一块内存);
    • 特点:修改形参就是直接修改实参,实现双向传递;
    • 应用场景:不仅解决 “多返回值”(return 只能返一个值,引用可改多个实参),还能减少大对象拷贝的开销(比如传递大数组 / 自定义类对象);
    • 例:void func(int &x) { x=10; },主函数调用func(a)a的值会被改成 10。
  6. 常引用参数可以保障实参数据的安全

    用于解决仅仅传递引用却不双向传递来保证传递数据的安全性,因为传递引用要比传递值的开销要小。也就是说用于传引用而不双向传递。

    • 核心作用:「兼顾效率 + 安全」
      • 效率:传引用(避免值传递的拷贝,尤其大对象);
      • 安全:const禁止通过引用修改实参(即使函数内误写修改代码,编译器也会报错);
    • 适用场景:仅需读取实参值、无需修改,但想减少拷贝开销时(比如void print(const string &s))。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/15 3:22:40

35、Windows Server 2012 R2 网络打印机与打印服务管理指南

Windows Server 2012 R2 网络打印机与打印服务管理指南 在企业网络环境中,高效管理打印机和打印服务对于提升工作效率至关重要。本文将详细介绍 Windows Server 2012 R2 系统下网络打印机和打印服务的管理方法,包括组策略影响、打印服务器配置、文件和打印机共享设置、打印管…

作者头像 李华
网站建设 2026/1/6 2:21:52

37、网络打印机和打印服务管理全攻略

网络打印机和打印服务管理全攻略 在网络环境中,打印机和打印服务的管理至关重要。它不仅影响着工作效率,还关系到资源的合理利用。下面将详细介绍网络打印机和打印服务管理的各个方面,包括驱动安装与更新、打印机迁移、监控、问题解决以及各种属性配置等内容。 驱动安装与…

作者头像 李华
网站建设 2026/1/14 17:33:21

30、游戏性能与视觉效果优化指南

游戏性能与视觉效果优化指南 1. 电脑游戏与主机游戏的对比 很多玩家在电脑游戏和主机游戏之间有不同的偏好。我个人强烈倾向于电脑带来的游戏体验,原因如下: - 操作精准度 :我依赖键盘和鼠标进行游戏,它们能提供我所需的精确操作,而游戏手柄则难以达到这种精度。 - …

作者头像 李华
网站建设 2026/1/14 19:32:22

34、Windows Vista 游戏与多媒体优化全攻略

Windows Vista 游戏与多媒体优化全攻略 1. Windows Vista 与 Xbox 360 的媒体共享 在完成特定步骤后,你可以在 Xbox 360 上浏览媒体文件,并通过与之相连的娱乐中心播放。需要注意的是,若要在 Windows Vista 上共享媒体文件,当前网络连接必须是私人网络,无法在公共网络上以…

作者头像 李华
网站建设 2026/1/15 7:20:43

day42Dataset和Dataloader@浙大疏锦行

day42Dataset和Dataloader浙大疏锦行 下载数据集 import torch import torchvision from torchvision import datasets, transforms import matplotlib.pyplot as plt import numpy as np# 设置随机种子 torch.manual_seed(42)# 1. 定义预处理 # CIFAR-10 图片是 32x32 的 RG…

作者头像 李华
网站建设 2026/1/2 7:42:36

61、Windows 7 网络设置与用户账户管理全攻略

Windows 7 网络设置与用户账户管理全攻略 一、Windows 7 网络相关功能及设置 1. 网络操作选项介绍 在 Windows 7 系统中,有几个实用的网络操作选项: - Option - Move Up :可将无线网络的连接优先级调高,使选定的连接在其他已创建的连接之前进行连接。 - Adapter Pr…

作者头像 李华