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