通过引用传递 int 与通过值传递 int 的好处?

2024-03-13

  1. 通过引用而不是值传递整数是否有性能优势?我这样说是因为如果您通过引用传递,您将创建一个 4 字节指针,但如果您通过值传递,您无论如何都会创建该值的 4 字节副本。那么它们都多占用了 4 个字节,对吗?
  2. 是否可以使用强制转换通过引用传递 int 文字: (int *) ?或者你必须传递一个指向 int 的指针吗?请参阅下面的示例代码:

    int func1(int *a){
        (*a)++; // edited from comment by Joachim Pileborg
        printf("%i\n", *a);
        return 0;
    }
    
    int func2(int a){
        a++;
        printf("%i\n", a);
        return 0;
    }
    
    int main(void){
        func1(&(int *)5); // an int literal passed by reference using a cast ?
        func2(5);
        return 0;
    }
    

指针传递(C 中没有引用)的好处是函数可以更新原始值int,即返回其中的值。没有性能优势;相反,传递指针可能会减慢你的程序,因为int所指向的必须位于可寻址内存中,因此它不能位于寄存器中。

注意&(int *)5不做你认为它做的事。(int *)5转换值5指向一个指针,将其解释为内存地址。这&会给出该指针的地址,但获取临时地址是非法的。你可能的意思是

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

通过引用传递 int 与通过值传递 int 的好处? 的相关文章

  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • 有什么工具可以说明每种方法运行需要多长时间?

    我的程序的某些部分速度很慢 我想知道是否有我可以使用的工具 例如它可以告诉我可以运行 methodA 花了 100ms 等等 或者类似的有用信息 如果您使用的是 Visual Studio Team System 性能工具 中有一个内置分析
  • std::map 和二叉搜索树

    我读过 std map 是使用二叉搜索树数据结构实现的 BST 是一种顺序数据结构 类似于数组中的元素 它将元素存储在 BST 节点中并按其顺序维护元素 例如如果元素小于节点 则将其存储在节点的左侧 如果元素大于节点 则将其存储在节点的右侧
  • TextBox 焦点的 WinForms 事件?

    我想添加一个偶数TextBox当它有焦点时 我知道我可以用一个简单的方法来做到这一点textbox1 Focus并检查布尔值 但我不想那样做 我想这样做 this tGID Focus new System EventHandler thi
  • Xamarin Android:获取内存中的所有进程

    有没有办法读取所有进程 而不仅仅是正在运行的进程 如果我对 Android 的理解正确的话 一次只有一个进程在运行 其他所有进程都被冻结 后台进程被忽略 您可以使用以下代码片段获取当前正在运行的所有 Android 应用程序进程 Activ
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include
  • gdb 在 docker 上立即退出“进程已完成,退出代码 1”或 lldb“数据包返回错误 8”。另外:如何在 docker 中允许进行 C++ 调试

    这花了我一整天的时间才找到 所以我将其发布以供将来参考 我正在 docker 镜像上开发 C 我正在使用克利翁 我的代码是在调试模式下编译的 并且在运行模式下运行良好 但是当尝试调试时 进程会立即退出 并显示非常丰富的信息 Process
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • C# 搜索目录中包含字符串的所有文件,然后返回该字符串

    使用用户在文本框中输入的内容 我想搜索目录中的哪个文件包含该文本 然后我想解析出信息 但我似乎找不到该字符串或至少返回信息 任何帮助将不胜感激 我当前的代码 private void btnSearchSerial Click object
  • Silverlight Datagrid:在对列进行排序时突出显示整个列

    我的 Silverlight 应用程序中有一个 DataGrid 我想在对该列进行排序时突出显示整个列 它在概念上与上一个问题类似 Silverlight DataGrid 突出显示整列 https stackoverflow com qu
  • 是否有一个 C++ 库可以从 PDF 文件中提取文本,例如 PDFBox for Java? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 去年 我使用 PDFBox 在 Java 中创建了一个应用程序来获取某些 PDF 文件中的原始文本 现在
  • 如何检测 C# 中该字典键是否存在?

    我正在使用 Exchange Web 服务托管 API 和联系人数据 我有以下代码 即功能性的 但并不理想 foreach Contact c in contactList string openItemUrl https service
  • 内核开发和 C++ [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 从我know https stackoverflow com questions 580292 what languages are windo
  • 为什么我使用google'smtp'无法发送电子邮件?

    我有以下程序使用 smtp gmail com 587 发送电子邮件 namespace TestMailServer class Program static void Main string args MailMessage mail
  • 运行代码首先迁移更新数据库时出错

    我在迁移到数据库时遇到问题 并且似乎找不到我遇到的错误的答案 System MissingMethodException Method not found System Data Entity Migrations Builders Tab
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式
  • 热重载时调用方法

    我正在使用 Visual Studio 2022 和 C 制作游戏 我想知道当您热重新加载应用程序 当它正在运行时 时是否可以触发一些代码 我基本上有 2 个名为 UnloadLevel 和 LoadLevel 的方法 我想在热重载时执行它

随机推荐

  • mysql 按唯一单词匹配的数量排序

    我发现很多问题都要求出现次数 但没有一个问题与我希望的完全一样 动态生成的 准备好的语句 查询将产生如下结果 SELECT FROM products WHERE title LIKE AND title LIKE AND content
  • 更改 Bootstrap Typeahead 的外观

    我一直在尝试使用引导程序进行搜索提前输入 我已经能够得到dropdown list使用 Ajax 但是 我想更改下拉列表的宽度以及其中的填充和基本背景颜色 这是白色的 我该怎么做 另外 我希望它始终显示a gt View All Resul
  • 在 MVC 应用程序中将实体框架数据模型放在哪里?

    让我们考虑默认的 ASP NET MVC 应用程序文件夹结构 它看起来像这样 App data Content Controllers HomeController cs Models AccountModels cs Scripts Vi
  • 是否可以在批处理文件中逐行从管道中读取?

    我想知道是否可以从批处理文件中的管道中读取数据 如果我写 echo Test 我明白 毫不奇怪 Test 那很好 但是如果我想通过管道传输输出并从另一个命令读取它怎么办 echo Test echo 如何通过管道获得与以前相同的结果 谢谢
  • 警告:json_decode() 最多需要 2 个参数,给定 4 个参数

    我尝试像这样使用 json decode json decode string true 100 JSON BIGINT AS STRING 但我收到错误 Warning json decode expects at most 2 para
  • 转换 LOG4J >> SLF4J + logback

    我目前的任务是将所有出现的 LOG4J 更改为 SLF4J 包括必要时的 logback 我已经设法将所有旧的 log4j xml 转换为 logback xml 并强制使用 logback 附加程序 但是 我刚刚发现代码中的一行还无法转换
  • 加载共享库 libresolv.so.2 时出错:没有这样的文件或目录(/lib/libclntsh.so 需要)

    每次我尝试连接到 Oracle DB 时都会收到此错误 DPI 1047 Cannot locate a 64 bit Oracle Client library Error loading shared library libnsl so
  • 关于代码密度作为编程语言能力衡量标准的文章[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我记得看过一篇文章说这样的话 不同的编程语言引入的错误数量差异不大 但很大程度上取决于 SLOC 源代
  • 如何防止 React-native-device-info 导致我的设置出现 React 歧义?

    我在安装时遇到问题react native device info进入现有的反应本机项目 使用创建create react native app然后弹出 I run yarn add react native device info yar
  • Visual Studio 2010 不断改变我的 winforms 控件

    我在 VS 2010 中的用户控件遇到了奇怪的情况 表单设计者不断更改我的条目 然后告诉我它不存在 它第一次编译并运行 然后如果我更改一些不相关的内容 它会在 Designer cs 文件中给出错误 无法解析符号 SomeEntry pri
  • Android 位图、回收和堆碎片

    我有一个应用程序大量使用从 SD 卡读取的位图 我 99 确信如果不回收这些 我的应用程序永远不会被破坏 它们都被分配到 LRU 缓存 公共集合 中 当它们从 LRU 缓存中清除时 该缓存会回收它们 并且我回收剩余的onDestroy 尽管
  • 脚本输出中日期更改的奇怪问题

    我的一位同事编写了一个 Google Apps 脚本来自动化工作流程 批准酒店的客房补偿请求 总的来说 该脚本似乎按预期运行 脚本中有一个按自动计划运行的函数 基于时间 而不是事件驱动 曾有过几次因入住日期晚了一位而导致预订错误的情况 不幸
  • 使用 Xceed PropertyGrid

    我是 C WPF 的初学者 正在尝试使用 Xceed PropertyGrid 他们在他们的网站上展示了一个示例
  • 删除 Woocommerce 中特定产品类别的添加购物车按钮

    我遇到如何从类别产品中删除购物车的问题 如果我将它应用于特定的 ID 或一般情况下的所有 ID 它就可以正常工作 但我无法对类别执行此操作 下面是我对此所做的代码 另外 我正在努力将相同的模式应用到相关文章部分 因此任何帮助将不胜感激 谢谢
  • 如何使用 opencv 和 Python 找到 ROI 内的轮廓?

    我试图找到图像特定区域的轮廓 是否可以只显示 ROI 内的轮廓 而不显示图像其余部分的轮廓 我在另一篇类似的文章中读到我应该使用面具 但我认为我使用得不正确 我对 openCV 和 Python 很陌生 所以非常感谢任何帮助 import
  • 检测网络下拉菜单是否将显示在屏幕外

    我有一个基于 CSS 的简单多级下拉菜单 第二或第三级可能会超出可见窗口 具有某些分辨率和窗口大小的组合 如果某些预构建的菜单控件检测到这种情况 它们只会向左而不是向右打开下拉菜单 我如何测试 使用 JS jQuery 这种情况 您可以使用
  • Playbook 位于子目录中,而不是紧邻 group_vars

    有谁知道如何将剧本放入文件夹中 但共享相同的角色 group vars 以及通常位于根目录的其他内容 这就是我想要的 root dir group vars roles inventory playbooks my playbook yml
  • 如何强制 Jackson 将字段值反序列化为小写

    我有一个公开 REST 端点的 spring 应用程序 让我们将其命名为 doAction 作为请求 它消耗对象 class Person private String name private String email 一些客户端可以通过
  • matplotlib 获取轴相对刻度位置

    我知道我可以通过以下方式获得 y 刻度的位置ax get yticks 顺便说一句 这是获得它们的最佳 正确方法吗 但我需要相对于轴限制的刻度位置 即在 0 和 1 之间 获得这个的最好方法是什么 我试过ax get yticks tran
  • 通过引用传递 int 与通过值传递 int 的好处?

    通过引用而不是值传递整数是否有性能优势 我这样说是因为如果您通过引用传递 您将创建一个 4 字节指针 但如果您通过值传递 您无论如何都会创建该值的 4 字节副本 那么它们都多占用了 4 个字节 对吗 是否可以使用强制转换通过引用传递 int