2009-12-15 17 views
1

在我所知道的和我已經接觸到的編程語言中,C++看起來是唯一具有指針和引用的編程語言。這是真的嗎?C++是具有指針和引用的單一語言嗎?

+3

它的值得記住的僅僅是因爲語言有一些它調用引用或指針並不意味着它與C++引用或指針的100%等價。 c# – 2009-12-15 16:01:48

+0

我實際上想知道是否有任何其他語言有指針,也有這種... ...種類...以及正在創造sooOOO許多困難,soooooo(太)很多程序員的解除引用指針。 – 2009-12-16 16:55:52

回答

4

Algol 68和Pascal當然可以。 IIRC,阿達也是,儘管我不記得所有的細節。 PL /我也做了 - 它可能(很容易)是第一個包括兩者。

Algol 68的引用實際上更像是C++指針。在C++中,一旦你初始化一個引用,它總是指向同一個對象。在Algol 68中,您可以「重新安置」一個參考,因此它引用了一個不同的對象。

自從我使用Pascal以來,已經有一段時間了,但是如果使用內存服務,它只能使用參數傳遞參數(即var參數通過引用傳遞)。我不認爲你可以創建一個參數而不是參數。

Ada允許您將參數標記爲in,outinout。如果我沒有記錯,一些inout參數被複制到函數中,然後在最後被複制回調用者,但其他人則通過引用傳遞。正如我所說,我不記得細節。

+0

看起來像Algol 68只有'ref'(更像是指針),但不是兩個。 – 2009-12-16 16:49:04

+0

我接受Pascal,即使只限於參數傳遞,它也有指針和引用。不知道阿達。 – 2009-12-16 16:52:29

+0

@dtrosset:你是對的,我的回答很糟糕 - 我沒有打算說Algol 68有兩個獨立的東西,但它有引用,可以做大多數類似指針的事情,所以它有點有兩個作爲一個單一的項目。 – 2009-12-16 18:46:59

1

C#有類似的東西,那裏面有unsafe這個方法可以包含指針。雖然C#中的指針有點更有限。

2

谷歌的Go都有。切片是參考。我認爲它不像C++那樣具有通用性和清晰性,您可以在其中自己挑選指針和引用。

+0

沒錯。但是如果我理解正確的話,人們只能對一個數組進行切片,而不能對其他類型進行切片。 – 2009-12-15 15:59:44

0

C++是唯一具有C++調用指針和引用的語言,是的。就像Java是唯一具有Java類的語言一樣,Python是唯一具有Python功能的語言。

很多語言有東西被稱爲引用,但他們很少是完全相同的東西。

C#有一些所謂的參考,不表現得像C++的參考,如果你使用不安全的代碼,它被稱爲指針的東西太(這又沒有定義完全像C++指針)

所以真的,這是一個毫無意義的問題。沒有其他語言具有C++的確切功能,沒有。但是很多語言都有類似的特性。