作为CS的本科生,我从C开始,其中指针是一种重要的数据类型。之后我谈到了Java,JavaScript,PHP,Python。它们本身都没有指针。
为什么?他们的语言中是否有类似指针的等价物,或者指针的功能不再重要了?
我粗略有一些想法,但我很乐意听到更多有经验的程序员的意见。
答案 0 :(得分:5)
为什么?
一般来说,指针被认为太危险,因此现代语言试图避免直接使用它们。
他们的语言中是否有类似指针的等价物,或者指针的功能不再重要了?
功能非常重要。但为了使它们不那么危险,指针已被抽象为不太恶毒的类型,例如引用。
基本上,这归结为更强的打字和缺乏指针算法。
答案 1 :(得分:1)
大多数面向对象的语言将对象实现为C指针,但它们是抽象的,您无法更改它的值。所以当你使用这个/ self时,它确实是大多数情况下的指针(某些语言可能有一个对象表,可以更快地进行垃圾回收和其他优化)。
例如在Java中,当您执行以下操作时:
Object t = new A();
t = new B();
您正在将指针交换到场景后面。有些语言重新引入像Go这样的指针概念,但你不能用它算术。
所以在某种程度上:没有指针没有从语言中消失,它们只是以更好的方式实现。 C设计指针的方式并不好,但它有助于实现其目的。它有很多原因并不好,一个是:它打破你程序的不变性。我并不是要避免它,当然它们对C来说至关重要。
答案 2 :(得分:0)
在Java中: