对象变量:指针和引用 - 在编程语言中有什么共同之处?

19 浏览
0 Comments

对象变量:指针和引用 - 在编程语言中有什么共同之处?

我在大学学习了Java编程。我读的书解释了指针在对象变量中的使用概念。后来我查看了C++中指针和引用的实际概念。\n我知道这些概念并非完全适用于其他高级/脚本语言,但有一些相似的重复模式。\n当我开始学习新的语言时,我注意到它们大多依赖于在变量中存储某种对象标识符的概念。当在对象变量上使用访问运算符时,它会读取它,根据标识符识别对象并访问其内容。我认为这与指针的基本概念非常接近。\n我已经在PHP和JS中验证了这种行为。\nPHP的示例:\nhttps://www.php.net/manual/en/language.oop5.references.php\n

\n当对象作为参数传递、返回或赋值给另一个变量时,这些不同的变量不是别名:它们保存了一个指向相同对象的标识符的副本。\n

\n然而,我经常看到人们混淆引用和指针的术语。这让我有点困惑。\n就个人而言,我认为指针是一种更优雅的存储对象的方式。\n我想知道指针是否实际上是作为对象变量的常见情况,或者引用是否同样常见。指针在引用方面是否有明显的优势?\n很难确定使用了哪种通用概念,因为从程序员的角度来看,内部通常是抽象的。但我想对底层发生的事情有一个大致的了解。不需要所有的细节,但在概念上了解一下。

0
0 Comments

指针和引用之间的共同之处 - 这个问题的出现的原因以及解决方法

在CPU级别上,除了寄存器之外,还有指针(以及其他任何东西)。因此,所有所谓的低级语言必须具有某种指针机制,因为这就是内部工作的方式。在汇编级别上,每个变量、函数等都是指针。

然而,在语言级别上,指针和引用的使用方式可能是不同的。它们是否以类似的方式实现取决于实现。在语言级别上,它们是不同的。因此,您需要学习两者。不仅仅是指针或引用的概念,还涉及整个内存管理、变量可见性和生命周期等过程。

建议:从一本好的C++书籍开始学习,不要对任何事情做出假设。Java的内存管理与C++和C++11及更高版本的内存管理非常不同。

我的想法是,可能有一些通用的技术原因,可以在更抽象的层面上应用这个概念。例如,当具有动态分配的对象时,我认为将这些引用存储为指针中的值更容易处理。

如果您熟悉内部原理,将语言方面的问题简化为CPU级别将会很容易。

我认为我的问题对于措辞可能造成了一些困惑。我知道高级语言与底层发生的情况不完全匹配。但似乎存在一些重复出现的模式。例如,存储用于访问对象的标识符的变量 - 这就是我所说的指针,因为它是指向对象的变量。另一方面,我将引用视为别名。

0