C(++) Pointers, needing clarification
Possible Duplicate:
What are the barriers to understanding pointers and what can be done to overcome them?
号
也许这是我在这里要问的最愚蠢的问题,但一年来,当这个想法出现在我的脑海中时,我却无处可逃地胡思乱想。
有人愿意向我解释C(++)中指针的用法、它们为什么有用以及指针的实际应用吗?
我已经知道的是:
百万千克1
对于那些试图解释——如果它有帮助——我在Java中有5年的业余经验,在实践中,它不处理C方式的指针(但是,Java确实使用指针——参见Null PoExtExchange,以证明这一点)。
事先谢谢!
Java中的每个对象"引用"实际上是一个指针。当将一个对象作为参数传递给爪哇中的方法时,实际上是将指针传递给对象;实际对象不被复制或任何东西。调用方和被调用方都可以引用同一对象。这对你来说很自然。
相反,在C++中,默认情况下,如果将对象传递给方法,则复制对象。如果更改方法中的对象,调用方中的原始对象将保持不变。你觉得这很奇怪。
但是如果你在C++中使用指针,那么C++对象就像Java对象一样。对象保留其身份,而不是经常被复制和销毁。唷!
C++中的引用是伪装的指针;如果通过引用将对象传递给方法,则调用方和被调用方都引用相同的对象,但不能使被调用方中的变量引用不同的对象而不损坏原始对象。
指针不会节省堆栈上的空间,因为这是它们的主要功能。
指针是将地址存储在某个数据块内存中的变量。这个地址存储在一个变量中,就像您可以使用变量
你的问题没有简单的答案。你只需要学习一会儿。
但我要说的是:在机器层面上,微处理器使用内存和寄存器。指针只是一个允许您直接使用内存的特性。不管怎样,这就是电脑所做的。这有许多方法可以使代码更加灵活、高效或更容易实现。
对于一个使用了多年的人来说,它们似乎是世界上最自然的东西。对于C这样的语言,即使语言控制它们,它们仍然非常存在。