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

2024-04-25 13:22:07 发布

您现在位置:Python中文网/ 问答频道 /正文

作为一名计算机科学专业的本科生,我从C开始学习,其中指针是一种重要的数据类型。此后,我谈到了Java、JavaScript、PHP、Python。它们都没有指针本身。在

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

我大概有一些想法,但我很想听听更有经验的程序员的意见。在


Tags: 功能语言专业经验javajavascript程序员意见
3条回答

在Java中:

  • 您没有指向使用malloc分配的结构的指针,而是引用了用“new”实例化的类的实例。(在爪哇中,不能直接在C/C++)中为堆上的对象分配内存< <
  • 基本体没有指针,但主库中内置了一些库,用于在对象(Integer、double)中包装int、double等。在

为什么?

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

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

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

基本上,这归结于更强的类型,以及缺少指针算法。在

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

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

Object t = new A();
t = new B();

您正在场景后面交换指针。有些语言重新引入了指针的概念,比如Go,但是你不能用它来做算术。在

所以从某种程度上说:没有指针并没有从语言中消失,它们只是以更好的方式实现而已。C有designe指针的方法一点也不好,但它是有其用途的。它不好的原因有很多,一个是:它破坏了程序的不变量。我并不是有意回避它,当然它们对C来说是至关重要的

相关问题 更多 >