C ++是同时具有指针和引用的单一语言吗?

时间:2009-12-15 15:50:12

标签: c++ programming-languages pointers reference

在我所知道的编程语言和我接触过的编程语言中,C ++看起来是唯一同时拥有指针和引用的语言。这是真的吗?

4 个答案:

答案 0 :(得分:4)

Algol 68和Pascal当然可以。虽然我不记得所有的细节,但是艾达也是如此。 PL / I也做得很好 - 它可能(很容易)成为第一个包含两者的人。

Algol 68的引用实际上更像是C ++指针。在C ++中,初始化引用后,它始终引用同一个对象。在Algol 68中,您可以“重置”一个引用,因此它引用了另一个对象。

我使用Pascal已经有一段时间了,但是如果内存服务它只使用引用就是参数传递(即var参数通过引用传递)。我不认为你可以创建一个参数而不是参数。

Ada允许您将参数标记为inoutinout。如果我没记错的话,一些inout参数被复制到函数中,然后在最后复制回调用者,但其他参数通过引用传递。正如我所说,我不记得细节。

答案 1 :(得分:2)

Google的Go同时拥有。切片是参考。我认为它不像C ++那样通用和简洁,你可以经常在指针和引用之间进行选择。

答案 2 :(得分:1)

C#有类似的东西,其中有unsafe个方法可以包含指针。虽然C#中的指针有点受限制。

答案 3 :(得分:0)

C ++是唯一具有C ++调用指针和引用的语言,是的。就像Java是唯一具有Java类的语言一样,Python是唯一具有Python函数的语言。

许多语言都有某种称为引用,但它们很少是完全相同的。

C#有一些叫做引用的东西,它的行为不像C ++引用,如果你使用不安全的代码,它也有一些叫做指针的东西(它的定义也不像C ++指针那样)

所以,这是一个毫无意义的问题。没有其他语言具有C ++的确切功能,没有。但是许多语言在相同的名称下具有类似的功能。