为什么编程中需要指针? [关闭]

2023-12-03

使用任何语言(例如 C 语言)编写代码时使用指针是否重要?它会占用更多内存吗?

Thank u


Ditto SpyrosP 评论说,如果不进行长时间的讨论,这个问题很难回答。

我想我的简短回答是:指针对于编程来说是绝对必要的吗?不会。它们使某些问题更容易或更清晰地解决,但您总能找到替代解决方案。这就像问“数据库对编程重要吗?”甚至“乘法运算符对编程重要吗?”去掉任何一两个功能,您几乎总是可以用剩余的功能以其他方式完成工作。

有许多指针很有用的例子。

例如,当我们想要在两个或多个事物之间创建关联(所有这些事物都可以独立更新)时,指针非常有用。例如,假设我们有一个内存块包含有关客户的信息,另一个内存块包含有关订单的信息。该订单是针对某些客户的。我们可以将所有客户信息复制到订单块中。但是如果客户信息发生变化,我们就必须在两个地方进行更改。如果我们在内存中保存多个订单(可能是针对相同或不同的客户)怎么办?现在,如果客户信息发生更改,我们必须以某种方式知道哪些订单与该客户相关,并更改所有订单。如果我们在这方面犯了错误,我们可能会得到相互矛盾的客户信息。

但是有了指针,我们就可以只拥有客户信息的一份副本,并且订单有一个指向客户的指针。那么如果客户信息发生变化,我们就不需要更新每个订单中的另一个副本,因为每个订单中没有“其他副本”。所有订单都只有一个指向一份副本的指针。我们改变了一个地方,神奇的是所有其他地方都看到了同样的变化。

您可能想要一本关于数据结构的书或找到一个网站来获取更多示例。

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

为什么编程中需要指针? [关闭] 的相关文章

  • 测量单位是 F# 独有的吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Windows 汇编语言编程

    有人可以指出有关此主题的一些最新资源吗 像任何东西一样进行搜索 但大多数像 Iczelion 这样的 Tutos 已有十年历史 不再流行 不再是最新的 并不意味着该信息毫无用处 几乎所有关于 Win32 汇编语言的信息仍然适用 即使 Win
  • 除了 Haxe 之外,还有其他针对 PHP 的编程语言吗?

    PHP 并没有得到太多的喜爱 但在易于部署 对于廉价托管 方面仍然是赢家 有没有任何编程语言 除了Haxe http haxe org 那个目标 PHP 用这种语言编写应用程序 然后将其翻译成 PHP 就像某些语言以 C 作为中间语言一样
  • 函数式反应式编程语言规范

    我正在考虑在某个时候创建 一个功能性反应框架 我已经阅读了很多相关内容并看到了一些示例 但我想清楚地了解这个框架必须做什么才能被视为 FRP 扩展 dsl 我并不真正关心实施问题或细节等 但更关心完美世界情况下需要什么 理想的函数式反应式编
  • 有用的替代控制结构?

    有时 当我编程时 我发现某些特定的控制结构对我非常有用 但在我的编程语言中不能直接使用 我认为我最常见的愿望是 短暂的一段时间 我不知道实际上该怎么称呼它 foo split while condition bar 这段代码的语义是foo
  • 什么是“表达问题”?

    我对这是什么有一个粗略的想法 但如果有人对 表达问题 有他们认为简洁直观的解释 我很想听听 Watch 这个想法是 您的程序是数据类型和对其进行操作的组合 该问题要求一种实现 允许添加类型的新情况和新操作 而不需要重新编译旧模块并保持静态类
  • 最好的屏幕抓取语言是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • “线程安全”一词的含义是什么?

    这是否意味着两个线程不能同时更改底层数据 或者这是否意味着当多个线程执行该代码段时 给定的代码段将以可预测的结果运行 线程安全代码是即使许多线程同时执行它也能工作的代码 http mindprod com jgloss threadsafe
  • 在 GCC 中设置 std=c99 标志

    我想知道是否有任何文件可以设置 std c99标志 这样我就不必为每个编译都设置它 我在 Ubuntu 上使用 GCC 4 4 而不是打电话 usr bin gcc use usr bin c99 这是 Single Unix 认可的调用
  • 在现实生活中的示例中,何时使用后减/增量与前减/增量? [复制]

    这个问题在这里已经有答案了 可能的重复 如果该值未在语句中的其他任何地方使用 为什么要使用 i 而不是 i https stackoverflow com questions 1392820 why use i instead of i i
  • 关于代码密度作为编程语言能力衡量标准的文章[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我记得看过一篇文章说这样的话 不同的编程语言引入的错误数量差异不大 但很大程度上取决于 SLOC 源代
  • 如何获取C指针数组的长度? [复制]

    这个问题在这里已经有答案了 可能的重复 函数参数中数组的长度 https stackoverflow com questions 8269048 length of array in function argument 有没有像Java c
  • 为什么 Verilog 不被视为编程语言? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 教授在课堂上说学生不应该说他们学会了用Verilog 编程 他说 Verilog 之类的东西不是用来编程的 而是用来设计的 那么 Verilog
  • GoogleTalk 应用程序是用什么编程语言开发的?

    有谁知道 Google Talk 应用程序是用哪种编程语言开发的 是的 我询问的是 Windows 客户端应用程序 http www google ro talk http www google ro talk googletalk exe
  • Windows 开箱即用支持的语言

    我被要求为一组 Windows 机器 我认为是 XP 编写一个 非常 简单的程序 如此简单以至于语言的选择并不是真正的问题 但是 我希望能够分发直接在 Windows 计算机上运行的二进制文件 脚本 而不需要预先安装任何解释器或虚拟机 我正
  • 哪种函数式编程语言在 Eclipse 中提供最好的支持?

    作为一项练习 我的团队正在考虑学习函数式编程 选择一种语言的因素之一是它在 Eclipse 中的支持 任何带有 Eclipse 插件的语言都可以 但是哪种语言提供最好的免费插件呢 额外问题 该语言的最佳在线 书籍教程 我不知道它是否是最好的
  • 哪些通用编程语言/实现编译为 C [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我目前正在使用 Eiffel SmartEiffel ISE Eiffel 它正在编译为 c 我发现 如果输出进入可移植汇编语言 也称为
  • 静态/动态类型与静态/动态绑定

    大家这4个术语有什么区别 能举个例子吗 Static and dynamic是指解决某些编程元素的时间点的行话 Static表示解析是在程序构建时发生的 Dynamic表示解析是在程序运行时发生的 静态和动态打字 Typing指由于数据值之
  • 哪些编程语言不被视为高级语言? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在信息学理论中 我一直听到和读到有关高级和低级语言的内容 然而我不明白为什么这仍然相关 因为除了今天使用的汇编语言之外 没有任何 相关的 低级语
  • 使困惑。 OO 本质上是命令式的还是多范式的?

    当我通读 stackoverflow 的答案和问题时 我得到的印象是 OO 被划分为本质上是命令式的 但是 OO 不就是一种将代码和数据划分为现实世界对象的方法吗 如果是这样 为什么要放弃其他较低级别的范例来在这样的平台上工作 IOW 默认

随机推荐

  • Java Swing 以饼图形式显示进度

    我想以饼图格式显示进度 有人可以帮忙吗 我有数据要显示 但如何以这种格式显示它 当我们下载文件时 Google Chrome 中会显示进度 根据 trashgod 提供的链接 这里是实现 馅饼 效果的一种方法 这仅处理不确定的进度条 但添加
  • 将 swifty json 数组保存到用户默认值

    我有一个 jsondata它提供以下信息 let data QuestionTitle Entomology is the science that studies Id 205 Options Option Insects Id 810
  • 从 PySpark 中的列加载 XML 字符串

    我有一个 JSON 文件 其中一列是 XML 字符串 我尝试在第一步中提取该字段并写入文件 并在下一步中读取该文件 但每一行都有一个 XML 标头标记 因此生成的文件不是有效的 XML 文件 如何使用 PySpark XML 解析器 com
  • 使用 jQuery 获取每个
  • 索引号
  • 我正在尝试获取少数的索引号 li 的 li 是 8 我正在尝试获取每个 li 的编号 在每个 li 上单击我都会执行此功能 var str amastorage li index alert str 这总是给我8 EDIT 这就是我得到它的
  • onResume 在视图模型中不起作用

    我的数据仅在创建时才获取 我使用视图模型 当按后退按钮时 它不会更新以前的数据 onresume 在此不起作用 我提到了这个 但没有一个有帮助 gt 对 ViewModel 中的活动生命周期做出反应 我需要帮助 提前致谢 活动 class
  • DataGrid 获取选定行的列值

    我正在尝试获取 DataGrid 中选定行的每一列的值 这就是我所拥有的 private void dataGrid1 CellEditEnding object sender DataGridCellEditEndingEventArgs
  • $("html").animate({scrollTop: $(document).height() }, "慢");如果它在底部,请不要滚动它

    我有三个隐藏 div 的按钮 当我单击一个按钮时 我希望内容滚动到底部 然后当我单击另一个按钮时 我希望页面保持在原来的位置 但加载新内容 我尝试过变量和 if 语句 var i 0 link slide13 click function
  • 创建一个核心日期实体实例但不希望它被存储(非持久)

    有时我需要实例化核心数据实体来存储一些信息以供临时使用 但我不需要将它存储到数据库中 目前我创建了一个类似的类 其结构与 CoreDateEntity 相同 它运行良好 但我必须在两个模型之间进行许多数据传输 有没有更好的方法来处理这个问题
  • C# - 将 JSON 反序列化为 ValueTuple

    我正在尝试反序列化 foo 1 bar false foo 2 bar false into List lt string bool gt 类型 JsonConvert DeserializeObject
  • 修改Android选中下拉项的颜色

    如何修改 Android Honeycomb 应用程序中 Spinner 上所选项目的文本颜色 编辑 我有一个正在膨胀的旋转布局 是否可以在此微调器中添加属性来更改文本颜色 我能够更改背景 例如使用微调器上的 android backgro
  • 设计可插入积分和徽章系统[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 如何设计一个可插拔积分和徽章系统 既易于打开和关闭 又易于变成自己的模块 经过多次试验和错误 我得出的结论是 积分和徽章与应用程序的唯一业务逻辑过于交织在一起 无法以简单的方式将它们具
  • 获取长列表并将其重新整形为数据框“行” - pandas python 3

    我有一长串项目 我想按照设定的时间间隔将其放入数据框中 我有另一个带有 列名称 的列表 E g colnames Title Date Abstract ID Volume data a b c d e f g h i j k l m n
  • Python pandas 计算字符串中正则表达式匹配的数量

    我有一个包含句子的数据框和按主题分组的术语词典 我想在其中计算每个主题的术语匹配数 import pandas as pd terms animals fox deer eagle people John Rob Steve games b
  • 在插入时插入当前日期

    我有一个具有以下结构的表 id some column another column inserted edited 1 2014 08 15 2016 03 04 2 2015 09 16 2016 10 07 3
  • 用于向数组添加元素的 PowerShell 函数

    我对 PowerShell 还很陌生 并且正在尝试创建一些组合在一起的函数来创建和管理数组 我在使这些功能之一按预期工作时遇到一些问题 我需要第二个函数 AddToArray 将元素添加到指定索引 任何现有元素都不能被覆盖或删除 例如 如果
  • 如何在 powershell 中创建包含普通数组的非托管结构?

    我需要在 Powershell 脚本中组装一个 Blob 显示以下布局 Pragma pack 1 struct MyConfig uint16 t level uint16 t thresholds 16 the struct conta
  • [数组/对象]中的[文字]是什么意思?

    以下语法的含义是什么 1 in 1 2 3 5 我知道它不会在数组中搜索 1 但它有什么作用呢 我见过它在循环中使用 for var i in testArray 但也看到过它本身被使用 这是否意味着检查文字是否是另一个操作数的数组或对象中
  • 静态数据成员未通过套接字在对象发送中发送

    我想为两个客户端发送相同的对象 我使用对象写入非共享方法并读取非共享方法 我的对象的类是 package servidor import java io Serializable public class Token implements
  • 从不同数据库导入的语法 - MS Access

    我正在尝试 基本上 从一个后端到另一个后端进行自动行复制 因为后端正在使用但尚未完全开发 一些表已完成 其他表未完成 最后将完整的数据添加到更高级的数据库中 当日 我想知道 SQL 语句的语法是什么 INSERT INTO tblMyBet
  • 为什么编程中需要指针? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 使用任何语言 例如 C 语言 编写代码时使用指针是否重要 它会占用更多内存吗 Thank