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

|                                                                                                                       
已邀请:
Ditto SpyrosP的评论认为,如果不进行长时间讨论,很难回答这个问题。 我想我的简短答案是:编程绝对需要指针吗?否。它们使某些问题更容易解决或更清洁,但是您始终可以找到替代解决方案。这就像问“数据库对编程重要吗?”甚至“乘法运算符对编程重要吗?”带走任何一个或两个功能,您几乎总是可以以其他方式完成工作其余功能。 有许多示例在其中使用了指针。 例如,当我们想要在两个或多个事物之间创建关联时,指针非常有用,所有关联都可以独立更新。例如,假设我们有一个包含有关客户信息的内存块,另一个有有关订单信息的内存块。该订单是针对某些客户的。我们可以将所有客户信息复制到订单块中。但是,如果客户信息发生变化,我们必须在两个地方进行更改。如果我们在内存中保留多个订单,这些订单可能是针对相同或不同的客户,该怎么办?现在,如果客户信息已更改,我们必须以某种方式知道与该客户相关的订单,并全部更改。如果我们在执行此操作时出错,那么我们可能会有矛盾的客户信息。 但是使用指针,我们可能只有一份客户信息副本,而订单中有一个指向客户的指针。然后,如果客户信息发生变化,我们不需要更新每个订单中的另一个副本,因为每个订单中都没有“其他副本”。订单都只有一个指向一个副本的指针。我们改变一个地方,而其他所有地方都神奇地看到了同样的改变。 您可能想获取一本书或找到有关数据结构的网站,以获取更多示例。     
不,编程语言并非不可避免地需要指针。有没有指针的语言:Java和Python是众所周知的示例。许多采用功能范例的语言没有(内置)指针的概念。 在C中必须使用指针的原因是C是相对底层的语言。它最适合编写固件,驱动程序,OS组件或性能关键的库。在所有这些区域中,通常都直接使用内存块和地址进行大量工作,而指针是内存地址的C抽象。     
指向值的指针就像指向页面的URL。 指针与URL一样必要。 关于内存:URL所占用的内存远少于指向页面的内存,对于指针而言,这是完全相同的     
如果不进行长时间的讨论,这是一个很难回答的问题。首先,指针非常有用,并且需要使语言通用。 一个非常典型的情况是您想通过引用传递变量。这意味着您想在函数内更改其值。仅传递变量名,只会传递其值。相反,您必须传递一个指针,该指针显示传递的变量地址。 或者,当您必须指向新的内存创建的节点(例如链表节点)时。 就内存而言,指针就像另一个变量一样。因此,如果整数变量保存4个字节的STORAGE(不是内存),则该变量的整数指针保存4个字节的存储空间。这与内存无关,而与存储有关。     

要回复问题请先登录注册