各種語言中對指標的叫法
如果沒有指標,就無法構造正統的資料結構, 因此,比較成熟的、正統的程式語言,必定會存在指標3。
3以前, FORTRAN 、 COBOL 和BASIC 中 都沒有指標,但是在 fortran90、Visual Basic 等升級版中,正式引入 了指標功能。
咦?我怎麼聽說Java 就沒有指標呢……
我可以負責任地告訴你,這是個謠言。
第4 章的補充內容中也曾經提到,Java 只能通過指標來運算元組和對 象,因此,Java 比C 更離不開指標。
在早期的Java 白皮書中,就有“Java 中沒有指標”這樣的說法4。Java
中被稱為“引用”的概念,在C 和Pascal 的程式設計師看來,怎麼看都相當於
指標。我認為在“Java 中沒有指標”這個觀點的背後,瀰漫著下面這樣“狡
猾的”市場營銷的氣味,
4請參照http://java.sun.
com/docs/overviews/
java/java-overview-1.
html。
因為對於C 語言,大家都認為“指標比較難”,如果強調“沒 有指標”,程式設計新手也許更容易接受。
但是Java 的引用又和C 的指標有著很大的不同。Java 沒有指標運算, 因此不存在指標運算和陣列之間的那種微妙關係,此外你也不能取得指向 變數的指標。如果你認為這些差別能成為“Java 中沒有指標”的理由,那 麼Pascal 是不是也沒有指標呢?
除Java 之外,Lisp、Smalltalk 和Perl(Ver.5 以後)中相當於指標的對 象也被稱為“引用”,但是也有人會使用“指標”這樣的叫法。也就是說, 這些語言並沒有嚴格地將“引用”和“指標”分開。因為它們的本質相同, 所以Java 故意強調“沒有指標”,反而讓人覺得奇怪5。
5誕生在日本的面向對 象的指令碼語言Ruby, 作者在自己的著作中 就斷言“Ruby 中沒有 指標這樣的概念”,其 實Ruby 中也有叫做 “引用”的指標。
Ruby 中連字串這樣的基本型別也不是不可變的,像這樣的語言“沒 有指標”,是不是很危險?
Pascal、Modula2/3 和C 一樣,都稱之為指標。
Ada 中的名稱為“Access 型別”。這種叫法有點人讓人摸不著頭腦。
悲哀的是,C++在語法上將“指標”和“引用”區別成兩個不同的概念。
C++的“指標”和C、Pascal 的“指標”,以及Java 的“引用”同義。 其次,C++中的“引用”是指本來應該被稱為“別名”(alias)的物件,正因為是別名,所以一旦確定“別名是什麼”,就再也不能修改了。
實際上,C++的術語“引用”也是通過指標實現的,所以它其實是一個 重複的功能。很多熟練的C++程式設計師往往不使用“引用”,而總是使用指標。 但是,在某些運算子過載,以及複製建構函式的場景下,可能會不得不使 用“引用”。對於C++,有人說它太深奧,有人說使用它開發專案成本太高, 甚至有人質疑“是否存在理解C++全貌的人”……總之,C++也是一門讓人 糾結的開發語言。
相關文章
- 各種智慧指標的介紹指標
- C語言中的各種修飾符C語言
- 淺議C語言中靈魂陣列和指標的互操作(轉)C語言陣列指標
- 在MFC類中各種類的指標的獲取和應用指標
- 各語言中的三元運算子與 golang 對比Golang
- bad 指標的這種錯誤指標
- 聊聊C語言和指標的本質C語言指標
- 如何在各種程式語言中生成安全的隨機數隨機
- 詳解c++指標的指標和指標的引用C++指標
- c語言函式指標的定義C語言函式指標
- 對js中this指標的一些研究JS指標
- 指向指標的指標指標
- 指標的理解指標
- 指標的用法指標
- q語言中_的3種用法
- C語言:陣列和指標的區別C語言陣列指標
- C語言第四篇:指標的辨析C語言指標
- 空指標的救星指標
- 如何理解指向指標的指標?指標
- C語言中的指標加減偏移量C語言指標
- Go 語言中的兩種 slice 表示式Go
- 指標問題的一點體會(區別 [指向指標的指標] 與 [指標的指標] .) (轉)指標
- C語言學習筆記之指標的運算C語言筆記指標
- 字串指標的輸出字串指標
- 空指標的傳說指標
- const指標的引用指標
- 智慧指標的那些事指標
- OC指標的本質指標
- C/C++指向指標的指標C++指標
- c語言中的三種迴圈語句結構C語言
- 你正真瞭解C語言中的指標嗎C語言指標
- C 語言中的指標和記憶體洩漏指標記憶體
- 關於指標傳遞和指標的指標指標
- c語言中陣列的三種型別C語言陣列型別
- Go 語言中常見的幾種反模式Go模式
- kdb+/q語言中?的2種用法展示
- C語言void指標的運算操作[小知識]C語言指標
- 指標常量和常量指標的區別指標