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

时间:2011-04-15 17:15:25

标签: programming-languages

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

谢谢你

4 个答案:

答案 0 :(得分:8)

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

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

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

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

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

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

答案 1 :(得分:2)

不,对于编程语言来说,指针不是不可避免的必需。有些语言没有指针:Java和Python是众所周知的例子。许多采用功能范式的语言都没有(内置)指针的概念。

在C中你必须使用指针的原因是C是相对低级的语言。它最适合编写固件,驱动程序,OS组件或性能关键库。在所有这些方面,你通常直接使用内存块和地址,而指针是内存地址的C抽象。

答案 2 :(得分:1)

指向值的指针就像指向页面的URL。

指针与URL一样必要。

关于内存:URL占用的内存远远少于指向的页面,它与指针完全相同

答案 3 :(得分:-1)

如果不进行长时间的讨论,这是一个非常难以回答的问题。首先,指针非常有用,需要使语言变得多样化。

一种非常典型的情况是您希望通过引用传递变量。这意味着您要在函数内更改其值。仅传递变量名称,只会传递其值。相反,您必须传递一个指针,该指针显示传递的变量地址。

或者当您必须指向新内存创建节点时,如链接列表节点。

就内存而言,指针就像另一个变量。因此,如果整数变量保存4个字节的STORAGE(不是内存),则该变量的整数指针保存4个字节的存储空间。这不是关于记忆,而是关于存储。