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

各种语言中对指针的叫法相关推荐

  1. c语言中程序偏离,C语言中的指针加减偏移量

    首先看一段程序: #include int main() { int a[5] = {1, 2, 3, 4, 5}; int* p = (int*)(&a + 1); printf(" ...

  2. c语言中指针的类型,学习C语言中的指针类型

    摘要:结合我院学生十年来参加全国计算机等级考试(C语言部分)情况,通过分析成绩分布与题型关系,我们发现指针方面的题型失分率最高.在此基础上结合教学实际,本文提出学习指针知识的方法和顺序过程,并将其应用 ...

  3. c语言二级指针有什么作用,C语言中二级指针的实例详解

    C语言中二级指针的实例详解 C语言中二级指针的实例详解 用图说明 示例代码: #include int main(int argc, const char * argv[]) { // int a = ...

  4. C语言中的指针有什么作用

    C语言中的指针的作用是:通过指针不仅可以对数据本身,还可以对存储数据的变量地址进行操作.指针就是内存地址,指针变量是用来存放内存地址的变量. 指针定义: 指针,是C语言中的一个重要概念及其特点,也是掌 ...

  5. 指针在c语言中的运用,怎么理解C语言中的指针,如何运用?

    恰好我之前写了一系列介绍 C 语言的文章,介绍了什么是指针,以及为什么要使用指针,下面摘录一部分,感兴趣的话,可以点我了解更多. 什么是 C语言指针? 不同的数据类型的主要区别在于占用的存储空间不同. ...

  6. c语言中数组的概念及作用,详解C语言中的指针与数组的定义与使用

    指针的特点 他就是内存中的一个地址 指针本身运算 指针所指向的内容是可以操作的 操作系统是如何管理内存的 栈空间 4M~8m的大小 当进入函数的时候会进行压栈数据 堆空间 4g的大小 1g是操作系统 ...

  7. 详解:C语言中的指针和p, p+1, *(p+1), *P+1, p[0], p[0] 的含义

    解析:C语言中的指针和p, p+1, *(p+1), *P+1, p[0], &p[0] 每一种表达式的含义  一.先解决一个问题:什么是指针 指针就是存放地址的变量.很好,百度上就是这个答案 ...

  8. c语言野指针应用,C语言中野指针的深入解析

    C语言中野指针的深入解析 C语言中野指针这一块是C语言的难点,下面小编为大家带来了C语言中野指针的深入解析,欢迎大家阅读! "野指针"的成因主要有两种: (1)指针变量没有被初始化 ...

  9. 图解C语言中数组指针、指针数组、函数指针、函数指针数组、指向函数指针数组的指针

    关于C语言中数组指针.函数指针.指针数组.函数指针数组.指向函数指针数组的指针一直比较绕,稍微整理一下. 到底是指针还是数组? 其实到底是指针还是数组还是看变量名与[]先结合还是*先结合.我们知道C语 ...

最新文章

  1. GNU Wget 命令及其参数说明
  2. 为什么一个程序申请的内存有限制_为什么要做自己的小程序商城,做一个要多久?...
  3. 第50讲:Scrapy 部署不用愁,Scrapyd 的原理和使用
  4. P4248 [AHOI2013]差异
  5. Node.js初探之hello world
  6. php发送163邮件554,PHPMailer配置163邮箱发送邮件
  7. CSS基础「四」浮动 \ 常见网页布局
  8. Netty工作笔记0035---Reactor模式图剖析
  9. duilib之源码分析
  10. 用python画简单的图案-使用 Python Turtle 设计简单而又美丽的图形
  11. c# 线程 WPF 进度百分比(菜鸟)
  12. Dex Loader] Failed to load D:\adt-bundle-windows-x86_64-20190307\sdk\build-tools\28.0.3\lib\dx.jar
  13. 云南丽江梅里雪山泸沽湖游记攻略
  14. java rxtx下载_rxtx-2.1-7r2 jav
  15. 航空以太网(ARINC664)接口测试工具
  16. bzoj4816 Sdoi2017 数字表格
  17. 12个VSCode插件工具
  18. 从视频中提取图片(截取ppt)
  19. 搭建网站的步骤有哪些?
  20. android 多人视频,Android QQ 5.0 正式版:全新界面、精彩动态、多人视频/音频

热门文章

  1. java反序列化weblogic_[Todo]Java反序列化-weblogic
  2. c语言嵌入式开发单片机,嵌入式开发|单片机基础
  3. 正点原子探索者原理图_正点原子【STM32-F407探索者】第六章 跑马灯实验
  4. 【c语言】蓝桥杯算法提高 3-2字符串输入输出函数
  5. angular cli全局版本大于本地版本 把本地版本升级方式
  6. [ucgui] 对话框7——按钮触发与模式窗口
  7. 《Python面向对象编程指南》——1.2 基类中的__init__()方法
  8. C++ stringstream 简化数据类型转换
  9. 两步改动CentOS主机名称
  10. 转载:《TypeScript 中文入门教程》 4、类