为什么在编程时需要指针?

Que*_*ner 4 programming-languages

在用任何语言编写代码时使用指针是否重要,例如C语言是否会占用更多内存.

感谢你

Jay*_*Jay 8

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

我想我的简短答案是:指针对编程是绝对必要的吗?不会.他们会让一些问题变得更容易或更清晰,但您总能找到其他解决方案.这就像问:"数据库对编程很重要吗?" 甚至"乘法运算符对编程很重要吗?" 带走任何一个或两个功能,您几乎总能通过其他功能以其他方式完成工作.

有很多例子指针很有用.

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

但是通过指针,我们可以只获得一份客户信息,订单中有一个指向客户的指针.然后,如果客户信息发生变化,我们不需要在每个订单中更新另一个副本,因为每个订单中都没有"其他副本".订单都只有一个指向一个副本的指针.我们改变了一个地方,神奇地所有其他地方都看到了同样的变化.

您可能希望获得一本书或找到有关数据结构的网站以获取更多示例.

  • 我同意,引用基本上是一个指针。我的观点是它们被抽象了。曾经可以很容易地问“为什么我们需要处理 CPU 寄存器?” 在装配中你会这样做。在高级语言中,这被抽象掉了。Java“没有指针”,就像 C“没有 CPU 寄存器”一样。我无法理解(尽管一定有原因)的是为什么一些相当高级的语言(例如 Go)将指针公开为语言功能。我想不出有哪个实例通过引用传递对象和通过复制传递基元并不是我想要做的。 (2认同)