首页 > 其他分享 >各种语言中对指针的叫法

各种语言中对指针的叫法

时间:2023-06-21 13:05:17浏览次数:32  
标签:Java 语言 C++ Pascal 引用 叫法 Ruby 指针


如果没有指针,就无法构造正统的数据结构, 因此,比较成熟的、正统的编程语言,必定会存在指针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指针》

标签:Java,语言,C++,Pascal,引用,叫法,Ruby,指针
From: https://blog.51cto.com/u_15767091/6528189

相关文章

  • 为什么《七周七语言》选中的是这几种语言?
    从众多语言中,挑出本书包含的几门语言,这一过程也许不像你想得那么复杂。我们只不过发了些调查问卷,向本书的潜在读者请教了一番。调查数据汇总上来时,有八门语言入选希望最大。不过,我先是把JavaScript“踢”了出去,因为它实在是过于热门了,取而代之的是原型语言中热门程度仅次于JavaScri......
  • go语言解析HTTP包生成代码发送HTTP数据包
    输入是从fiddler捕获的HTTP数据包GEThttps://bbs.kanxue.com/HTTP/1.1Host:bbs.kanxue.comConnection:keep-aliveUpgrade-Insecure-Requests:1User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/114.0.0.0Safari......
  • C语言与C++不得不说的那点事
    说到C语言,就不得不说它的继承者——C++语言。众所周知,C++语言是在C语言的基础上,添加了面向对象、模板等现代程序设计语言的特性而发展起来的。两者无论是从语法规则上,还是从运算符的数量和使用上,都非常相似,所以我们常常将这两门语言统称为“C/C++”。虽然因为天然的血缘关系,导致两......
  • 为什么我们需要一门新语言——Go语言
    编程语言已经非常多,偏性能敏感的编译型语言有C、C++、Java、C#、Delphi和Objective-C等,偏快速业务开发的动态解析型语言有PHP、Python、Perl、Ruby、JavaScript和Lua等,面向特定领域的语言有Erlang、R和MATLAB等,那么我们为什么需要Go这样一门新语言呢?在2000年前的单机时代,C语......
  • Const 关键字 与指针
    Const关键字与指针发表于2007年04月29日由不及格的程序员-八神星期一天气:晴 使用指针会涉及到两个对象一个是指针本身,另一个是它指向的对象.将指针声明为const就使对象为常量而不是指针为常量;例如:constchar*p="asdf";//指向常量的指针p[2]=‘d’; /......
  • 8086汇编语言精讲1 :基础知识
    基础知识   也就是说伪指令和其他符号在编译器上将汇编指令翻译成的机械码改动,形成新的机械码      8086可以寻址2^16大小的数据量,因为它有16根数据总线,同时是在2进制下计数         ......
  • 精通c语言中的指针(精通c指针1)
    之前学c语言的时候,指针这一章学的半吊子,似是而非,最近经过学习,对指针有个更加深刻的理解。如果之前学过c指针,并且可以使用指针随心所欲操作内存中的任何数据,那么说明指针学好了,否则就是半吊子。如果之前学过指针,那最好忘记之前学过的所有概念,把指针当做一种新的类型来学习。这种......
  • 全面解读Objective-C语言及Cocoa特性——《Objective-C基础教程》
    媒体评论“这是我读过的最好的一本编程书。我从头到尾逐字逐句地读完了它,可读性真强啊!试问,现在有几本技术书能达到这种程度?”——Amazon读者评论“这本书结构清晰,逻辑性强,风格幽默……借助本书,你可以毫不费力地从一个初学者摇身一变升级为优秀的Objective-C编程人员。”——Ama......
  • Rust语言 - 接口设计的建议之受约束(Constrained)
    Rust语言-接口设计的建议之受约束(Constrained)RustAPI指南GitHub:https://github.com/rust-lang/api-guidelinesRustAPI指南中文:https://rust-chinese-translation.github.io/api-guidelines/RustAPI指南:https://rust-lang.github.io/api-guidelines/受约束(Constrai......
  • 权威解答495个最常遇到的C语言问题
     该书上市后好评如潮,第一次印刷不到1个月就全部售罄。更多C语言经典图书推荐:《编程精粹:编写高质量C语言代码》     媒体评论:“本书是Summit以及CFAQ在线列表的许多参与者多年心血的结晶,是C语言界最为珍贵的财富之一。我向所有C语言程序员推荐本书。”          ......