Pointers 在一段或更少的时间里,指针的目的和好处是什么?

Pointers 在一段或更少的时间里,指针的目的和好处是什么?,pointers,computer-science,Pointers,Computer Science,见标题。这就是我要问的。网络对这个问题没有很多简洁的答案。请记住堆栈与堆。向一个完全的初学者解释。只是寻找“为什么”而不是“如何” 编辑 指针是从堆栈中取出大对象的一种方法吗?当将一个大对象从程序的一个部分传递到另一个要处理的部分(例如整个类)时,或者将大量数据(例如图像或视频)传递给每一位数据时,效率会非常低。相反,您可以只传递一个很小的内存地址(指针),然后程序的接收部分就可以使用它来访问要处理的对象 除了这个巨大的方面,他们提供了很多灵活性,但我需要的不仅仅是一个段落 当你进入托管代码,比

见标题。这就是我要问的。网络对这个问题没有很多简洁的答案。请记住堆栈与堆。向一个完全的初学者解释。只是寻找“为什么”而不是“如何”

编辑
指针是从堆栈中取出大对象的一种方法吗?

当将一个大对象从程序的一个部分传递到另一个要处理的部分(例如整个类)时,或者将大量数据(例如图像或视频)传递给每一位数据时,效率会非常低。相反,您可以只传递一个很小的内存地址(指针),然后程序的接收部分就可以使用它来访问要处理的对象

除了这个巨大的方面,他们提供了很多灵活性,但我需要的不仅仅是一个段落

<>当你进入托管代码,比如C++或java >强>所有的< /强>都是用指针/引用完成的,但是它都在幕后,你不必像C++或其他类似语言那样处理它们。但了解它们的工作原理仍然至关重要

编辑以响应:

“如果我不需要工作,为什么我要传递一个大物体 是吗?”

你不会的。然而;如果我偏离了你的要求,请纠正我,但如果你继续学习计算机科学,你会学到的是,你的程序应该尽可能简单,它应该只做一件事。通常被称为“这意味着您的程序将有许多看起来很小的部分,它们将一起工作以实现总体目标”。这意味着许多这些微小的部件将需要处理相同的对象、相同的数据并使用相同的工具来完成工作。让我们看一个假设的例子


您正在编写一个简单的图像编辑应用程序。您将需要一个裁剪工具、一个画笔工具、一个选择工具和一个重新调整大小工具。这些工具中的每一个都需要在您的程序中有自己的位置(一个类或更可能是多个协同工作的类),并且该类将有许多较小的部分(方法/函数和其他东西)协同工作以实现该类的目标。这些类和方法中的每一个都很可能需要查看或修改图像数据。使用指针,您可以为它们提供内存地址,而不是制作图像的整个副本。这样,当其中一个类或方法对其进行更改时,您就不必担心管理所有这些副本并确保它们都得到相同的更改

它允许您通过引用/共享数据结构进行传递,它有两大功能:不进行复制,从而节省内存和CPU开销,它还通过对共享数据进行更改来提供复杂的通信模式。

这是一个真正的问题:如果我不需要处理一个大对象,为什么要传递它?节省内存,因为可以有两个指向同一数据段的指针,而不是数据的两个完整副本