我已经用 Java 编程了很多,之前也涉足过 C++。我在各种 C++ 书籍中阅读过有关指针的内容,并在书籍中完成了各种示例。
我了解指针的基础知识,但有一件事我一直不清楚。指针在现实世界中的应用是什么?我的意思是,在什么情况下使用指针比仅通过引用传递更有益(比如在 Java 中?)
我的意思是,在什么情况下使用指针比仅通过引用传递更有益(比如在 Java 中?)
Java 和许多其他语言中的引用基本上是指针之上的抽象。在 C(不是 C++)中,没有办法像在 C++ 中使用引用那样“通过引用传递”,因为不存在这种抽象,所以这永远不可能。C++ 添加了引用作为新的抽象。
使用 C++,您可以通过引用传递,这通常是首选。但是,在某种程度上,实际的动态内存分配仍将使用指针。
话虽如此,您可以在 C++ 中使用指针做一些事情,从而提高效率。了解内存和那里存储的内容允许您直接操作该数据,而无需在某些语言中获得抽象的开销。这不是“安全的”(很容易做一些危险和坏事)——但它通常很有用。(有些语言,如 C#,也允许您这样做,这非常有用,尽管它们要求您明确将该代码标记为“不安全”以允许它。)
话虽如此,指针通常在 C++ 中抽象。 智能指针提供了许多相同的好处,而没有使用“原始”指针的副作用和危险......
主要区别(至少对我而言)是您选择其中一个的时间。我认为如果您需要进行指针运算或为其分配 NULL 值,则使用指针,否则只需坚持引用;他们做这项工作。