修改函数内“按值传递”的参数并将它们用作局部变量

2024-04-12

我见过一些代码,其中按值传递给函数的参数被修改或分配了新值,并且像局部变量一样使用。

这是一件好事吗?这样做有什么陷阱吗?或者这样编码可以吗?


本质上,函数的参数是一个局部变量,所以这种做法原则上还不错。

另一方面,这样做可能会导致维护麻烦。如果稍后有另一个程序员出现,他可能会期望该变量保存传入的值,并且更改将导致错误。

重用变量的理由之一是对内存使用效率的误解。事实上,它不但不能提高效率,反而会降低效率。原因是编译器可以自动检测在两个不同的时间对两个不同的变量使用相同的寄存器是否有用,并且如果更好的话就会这样做。但程序员不应该为编译器做出这个决定。这将限制编译器可以做出的选择。

最安全的做法是在需要新值时使用新变量,并依靠编译器来提高其效率。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

修改函数内“按值传递”的参数并将它们用作局部变量 的相关文章

随机推荐

  • 如何对字符串中的子字符串重新排序?

    如何在 Perl 中的正则表达式中进行以下转换 British style US style 2009 27 02 gt 2009 02 27 我是 Perl 新手 对正则表达式了解不多 我能想到的就是提取 的不同部分 然后重新连接字符串
  • 使用 cassandra-cli 创建两个复合列

    我的列族需要两个复合列 关键数据类型是BytesType 以下是使用 CQL 的表定义 CREATE TABLE stats gid blob period int tid blob sum int uniques blob PRIMARY
  • 有没有办法用 EureakLog 进行正常日志记录?

    我正在使用 和旧版本 EurekaLog 它对于记录异常非常有用 但是有没有办法让它只正常记录事情呢 或者它根本不是为了这个目的 克里斯已经提到了我们的日志工具智能检测 http www gurock com smartinspect 谢谢
  • C++ 类设计、基类继承或外观设计模式

    我有一个愚蠢的 C 设计问题 有没有一种方法可以让一个类与多个类中的方法具有相同的方法名称 因此 具有相同的 API 我现在的情况是我有上课的情况 struct A void foo std cout lt lt A foo lt lt s
  • 如何继续 Subversion 中失败的加载

    我已经开始将颠覆转储加载到存储库中 在它完成之前 我耗尽了配额 命令停止了 我已要求更多配额 但现在我不知道如何继续进口 我应该简单地重做相同的命令吗 svnadmin load parent dir Software xxx module
  • Android UI - 动态添加按钮到 Gridview

    这就是我现在陷入困境的地方 我一直坚持向 gridview 动态添加按钮 我的 gridview 带有一个按钮 当用户单击该按钮时 会弹出上下文菜单 要求用户输入信息 完成后 使用该信息创建网格视图中的块 如图所示 我已经粘贴了代码 我不知
  • 如何更改 numpy 中的数组形状?

    如果我创建一个数组X np random rand D 1 它有形状 3 1 0 31215124 0 84270715 0 41846041 如果我创建自己的数组A np array 0 1 2 然后它就有了形状 1 3 看起来像 0 1
  • 如何将环境变量传递给 Jenkins 中的 sbt 测试构建步骤?

    在我的 scala 测试中 我通过以下方式读取了环境变量sys props getOrElse cassandra test host DEFAULT CASSANDRA TEST HOST 测试通过 Jenkins 运行 我添加了一个Bu
  • 设置不同颜色的 MapKit 引脚

    我是 iOS 新手 我实现了一个 MapKit 其中包含来自不同数组类型的静态标记 并且它们工作正常 例如 我尝试将来自商店数组的引脚设置为蓝色 以及来自社区读取的引脚等 我不知道该怎么做 无论如何 它们在地图上都是红色的 我的目标是改变每
  • R 和 android.R 类之间的区别[重复]

    这个问题在这里已经有答案了 任何人都可以从这个问题解释一下吗 R 之间有什么区别 R id myListView android R layout simple list item 1 这两个 R 不是同一类吗 R layout R id
  • 缓存文件模型 cakePHP

    将模型文件缓存在 app tmp cache models 中 我设置配置 Cache config default array engine gt File duration gt 3600000 serialize gt false 为
  • 带有装饰器和会话的 django 类视图

    我正在尝试将一些 django 视图从基于函数的视图转换为基于类的视图 但遇到了一个小问题 我的面向对象有点弱 我认为问题是我已经不知道事情的进展情况 我有一个自定义的登录装饰器 我需要在视图上使用 所以我 首先我有这个例子中的 View
  • Android:扫描 Wifi 网络 + 可选列表

    我正在尝试创建一个应用程序 让您扫描可用的 wifi 网络 然后将它们显示在可选列表中 为此 我尝试使用以下代码 package android nacho WifiScan import java util List import and
  • 使用 asp.net MVC 包装器在 Kendo UI 网格中设置日期时间格式

    我想构建一个格式为日期 dd MM yyyy 的 Kendo UI 网格 但是 我发现的所有与此相关的问题都已通过代码解决格式 0 d 所以 我尝试过像下面的代码 GridBoundColumnBuilder
  • 使用 Entity Framework 7 的 Fluent-API 创建可选外键

    我正在尝试使用 Entity Framework 7 和 Fluent API 创建可选外键 在 EF v6 x 中 我们可以选择使用以下命令添加此内容 WithOptional or HasOptional 但我在 EF 7 中找不到任何
  • 在 matlab 中保存设置

    确实是个愚蠢的问题 但是最近我整天都在做一些项目 我的眼睛很疼 如何在 Matlab 中保存设置 准确地说是颜色设置 以便在白天过去和夜晚到来时可以重新加载它们 将它们互换为不同的设置 一个子问题 matlab 我认为在本例中为 2008b
  • 有人可以给出pluginaweek - statemachine 的活动记录示例吗?

    有人可以举一个简单的例子来说明如何使用插件周状态机 https github com pluginaweek state machine对于具有活动记录的票证模型 我不明白文档中的复杂示例 示例说明 新 gt 接受 拒绝 反馈 已接受 gt
  • 在 Swift 中创建 gif 动画时出现问题

    我正在尝试从 4 个数组创建一个动画 gifUIImageSwift 中的元素 但目前它只保存第一帧 let url NSURL fileURLWithPath photosDirectory URLByAppendingPathCompo
  • Apache OFBiz delegator API 是否支持按限制或偏移量从数据库获取记录列表

    假设我们只需从表中获取 5 条记录 但我的 where 子句匹配数据库中的 25k 条记录 那么有没有办法ofbiz框架只选择 5 条记录 而不是从数据库获取列表 然后从列表中只取出 5 条记录 如果限制不可能 因为ofbizAPI 与数据
  • 修改函数内“按值传递”的参数并将它们用作局部变量

    我见过一些代码 其中按值传递给函数的参数被修改或分配了新值 并且像局部变量一样使用 这是一件好事吗 这样做有什么陷阱吗 或者这样编码可以吗 本质上 函数的参数是一个局部变量 所以这种做法原则上还不错 另一方面 这样做可能会导致维护麻烦 如果