什么是指针真正的"点"?

Bre*_*dan 2 c++ pointers

我已经用Java编程了很多,之前已经涉足过C++.我已经阅读了各种C++书籍中的指针,并在书中完成了各种示例.

我理解指针基础知识,但有一点我从来都不清楚.指针的真实世界应用是什么?我的意思是,在什么情况下使用指针比仅仅通过引用传递更有利(比如在Java中?)

Ree*_*sey 9

我的意思是,在什么情况下使用指针比仅仅通过引用传递更有利(比如在Java中?)

Java和许多其他语言中的引用基本上是指针之上的抽象.在C(不是C++)中,没有办法像C++那样通过引用"通过引用传递",因为抽象不存在,所以这绝不可能.C++将引用添加为新的抽象.

使用C++,您可以通过引用传递,这通常是首选.但是,实际的动态内存分配在某种程度上仍然可以使用指针.

话虽这么说,你可以在C++中使用指针做一些事情,这可以带来很好的效率.了解内存以及存储的内容允许您直接操作该数据,而无需在某些语言中获得抽象的开销.这不是"安全的"(很容易做出危险和坏事) - 但它通常很有用.(它很有用,有些语言,比如C#,也允许你这样做,虽然它们要求你明确地将该代码标记为"不安全"以便允许它.)

话虽这么说,指针通常是用C++抽象的. Smart Pointers提供了许多相同的好处,没有使用"原始"指针的副作用和危险......