http://msdn.microsoft.com/en-us/library/d5x73970(v=vs.80).aspx
在上面的链接中,“Node”类将“Node”作为其数据成员。它究竟是如何存储在内存中的?因为当它为“节点”创建内存结构时,其中一个成员具有“节点”内存结构。出于某种原因,我无法理解它在程序中如何解释并由编译器编译的内部工作原理?
http://msdn.microsoft.com/en-us/library/d5x73970(v=vs.80).aspx
在上面的链接中,“Node”类将“Node”作为其数据成员。它究竟是如何存储在内存中的?因为当它为“节点”创建内存结构时,其中一个成员具有“节点”内存结构。出于某种原因,我无法理解它在程序中如何解释并由编译器编译的内部工作原理?
我认为您的问题源于您直观地认为数据成员节点(或者更确切地说为其分配的内存)包含在原始节点中。
理解的关键是 Node 成员实际上是一个引用——它可能是空的。因此,用于存储构成节点的数据的内存可以在任何地方。Node 成员本质上是一个指针。
.NET 和现代语言倾向于掩盖这种事情,这样程序员就不需要考虑它了。如果我是你,我会考虑寻找高质量的 C 文本并仔细阅读关于指针的章节。
那里的Node
成员不是您所说的“嵌入”或“嵌套”。
它只是对另一个节点的引用。如果您正在使用 C 或 C++,它在概念上将是指向另一个节点的指针。
private class Node
{
private Node next;
private T data;
...
}
私有字段next
存储对类型对象的引用Node
。它引用的对象将在内存中的其他位置。