我是一名c#/java程序员,并没有太多地使用指针。我只是想知道这是不是足够有用的东西来学习。
有人能解释一下为什么这些指针会对c#/java程序员有帮助吗?
发布于 2011-01-29 08:50:00
你已经一直在使用指针了。Java中的每个非原语变量(可能还有C#,尽管我对它不太熟悉)都是指向对象的指针。
也许你想问一下关于pointer arithmetic的问题
发布于 2011-01-29 08:51:06
因为指针允许您实际手动访问内存(在Java或“安全”的C#中是不可能的),并且它们允许您控制如何分配对象。
在C#和Java中“保存”对象的变量实际上是在内存中保存指向对象的指针(也称为引用),因此类被称为“引用类型”。相比之下,结构是“值类型”,因此结构变量实际上保存了数据本身。指针允许您动态分配和访问内存,而无需对编译器进行任何安全检查--它们会给您带来一些潜在的性能提升,但它们会给您带来检查代码并确保其正确性的负担。
这样做的原因有点微妙:您需要指针,因为为了使用内存,您需要知道编译时所需的内存大小。但是当然,你永远不能确定用户不会尝试加载一个100MB的文件到你的程序中,而这个文件的设计只能处理20MB,另一方面,你不能从一开始就保留那么多(想想如果每个人都保留了所有的资源会发生什么)。所以你请求操作系统为你分配一个内存块,并给你它的第一个字节的地址,这就是为什么需要指针的原因。(指针还有其他用途,比如内存映射文件和设备,但这会使post更长。)
性能关键型应用程序,以及充满错误的应用程序,都经常大量使用指针。:)
发布于 2011-01-29 08:52:56
我认为,通过理解指针,你将更好地理解你的计算机中到底发生了什么,那里发生了什么,以及你的程序是如何实际工作的。
如果你不关心它,只想让你的java程序工作,你可以跳过它们;否则,我认为它们会在任何关于编程的事情上帮助你。
https://stackoverflow.com/questions/4834361
复制相似问题