各种语言中对指针的叫法(摘自《征服C指针》)

                                                                           返回主页

正如我反复强调的那样,如果没有指针,就无法构造正统的数据结构,因此,比较成熟的、正统的编程语言,必定会存在指针。

咦?我怎么听说Java就没有指针呢......

我可以负责任的告诉你, 这是个谣言

第四章的补充内容中也曾经提到,Java只能通过指针来操作数组和对象,因此,Java比C更离不开指针。

在早期的Java白皮书中,就有“Java中没有指针”这样的说法。Java中被称为“引用”的概念,在C和Pascal的程序员看来, 怎么看都相当于指针。我认为在“Java中没有指针”这个观点背后,弥漫着下面这种“狡猾的”市场营销的气味。

因为对于C语言,大家都认为“指针比较难”,如果强调“没有指针”,编程新手也许会更容易接受。

但是Java的引用又和C的指针有着很大的不同。Java没有指针运算,因此不存在指针运算和数组之间的那种微妙关系,此外你也不能取得指向变量的指针。如果你认为这些差别能成为“Java中没有指针”的里有,那么Pascal是不是也没有指针呢?

除Java之外,Lisp、Smalltalk和Perl(Ver.5以后)中相当于指针的对象也被称为“引用”,但是也有人使用“指针”这样的叫法。也就是说,这些语言并没有严格地将“引用”和“指针”分开。因为它们的 本质相同,所以Java故意强调“没有指针”,反而让人觉得奇怪。

Ruby中连字符串这样的基本类型类型也不是不可变的,像这样的语言“没有指针”是不是很危险?

Pascal、Module2/3和C一样,都称之为指针。

Ada中的名称为“Access类型”。这种叫法有点让人摸不着头脑。

......