Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 其他语言上的C指针等价物_Php_Javascript_Python_C_Pointers - Fatal编程技术网

Php 其他语言上的C指针等价物

Php 其他语言上的C指针等价物,php,javascript,python,c,pointers,Php,Javascript,Python,C,Pointers,作为CS的本科生,我从C开始,指针是一种重要的数据类型。此后,我接触了Java、JavaScript、PHP和Python。它们都没有指针本身 那为什么呢?他们的语言中是否有类似指针的等价物,或者指针的功能不再重要了 我大致有一些想法,但我很想听听更有经验的程序员对此的看法。为什么 一般来说,指针被认为太危险了,所以现代语言尽量避免直接使用指针 他们的语言中是否有类似指针的等价物,或者指针的功能不再重要了 功能非常重要。但为了降低危险性,指针被抽象为毒性较小的类型,如引用 基本上,这归结为更强的

作为CS的本科生,我从C开始,指针是一种重要的数据类型。此后,我接触了Java、JavaScript、PHP和Python。它们都没有指针本身

那为什么呢?他们的语言中是否有类似指针的等价物,或者指针的功能不再重要了

我大致有一些想法,但我很想听听更有经验的程序员对此的看法。

为什么

一般来说,指针被认为太危险了,所以现代语言尽量避免直接使用指针

他们的语言中是否有类似指针的等价物,或者指针的功能不再重要了

功能非常重要。但为了降低危险性,指针被抽象为毒性较小的类型,如引用

基本上,这归结为更强的类型和指针算法的缺乏。

在Java中:

  • 与使用malloc分配的结构指针不同,您使用的是对使用“new”实例化的类实例的引用。(在Java中,不能像在C/C++中那样直接为堆上的对象分配内存)
  • 原语没有指针,但主库中内置了一些库,用于将int、double等包装到对象(Integer、double)中

大多数面向对象语言将对象实现为C指针,但它们是抽象的,不能更改其值。因此,在大多数情况下,当您使用this/self时,它实际上是一个指针(某些语言可能有一个对象表,用于更快的垃圾回收和其他优化)

例如,在Java中,当您执行以下操作时:

Object t = new A();
t = new B();
您正在场景后面交换指针。一些语言重新引入了指针式Go的概念,但你不能用它做算术运算


所以在某种程度上:没有指针从语言中消失,它们只是以更好的方式实现的。C拥有设计指针的方式一点也不好,但它达到了它的目的。它不好有很多原因,一个是:它破坏了你程序的不变量。我并不是要避免它,当然它们对C语言来说是至关重要的。

这可能会有点帮助:也请看,这些语言中的引用实际上是指针,只是没有算术?@CharlesW。是的,如果你挖得够深,它们只是指针。(想想计算机通过基本操作访问数据的方式有多有限。)但是所有的东西都是高度抽象和分层的,所以你不能用C指针做任何讨厌的(有趣的)事情。C++仍然有指针,但这主要是因为它必须与C保持兼容。