繁体   English   中英

C++ 中的堆与堆栈

[英]Heap vs Stack in C++

我对 Java 有丰富的经验,但我是 C++ 的绝对初学者。 在 C++ 中,链表的节点将包括:

class Node {
int data;
Node *next

Node(int d) {
data = d;
*next = NULL;
   }
}

为什么指向下一个而不是数据的指针?

这是因为您不需要数据作为指针。 如果它是一个指针,那么您需要创建另一个变量,实际上包含数据(这是无意义的),其中“Node *next”指向地址,包含 class 节点类型的下一个元素。

为什么是指向下一个的指针

因为你不能在节点内有一个节点。 如果一个节点包含一个节点,那么内部节点也包含一个节点,那个节点包含一个节点,那个节点包含一个节点,那个节点包含一个节点,那个节点包含一个节点,那个节点包含一个节点,并且该节点包含一个节点...

你能发现问题吗? 一个类型不可能包含另一个自己类型的 object。 链接数据结构通过指向节点来工作。

不是为了数据?

因为如果将数据存储在节点中,则不需要数据指针。


对于来自 Java 的程序员来说,了解 class 类型的所有变量实际上都是指针可能会很有用。

为什么指向下一个而不是数据的指针?

通过在下一个节点中存储指向数据的指针,您将无法访问下一个节点旁边的节点,(即,您无法通过仅拥有指向该节点的指针来获取某些数据所属的节点存储的数据,你需要有一个指向节点本身的指针,你可以取消引用它来获取它指向的数据)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM