c++ - 为什么链表使用指针而不是在节点内存储节点

标签 c++ pointers linked-list

我之前在 Java 中广泛使用过链表,但我对 C++ 很陌生。我正在使用在项目中给我的这个节点类就好了

class Node
{
  public:
   Node(int data);

   int m_data;
   Node *m_next;
};

但我有一个问题没有得到很好的回答。为什么需要使用

Node *m_next;

指向列表中的下一个节点而不是

Node m_next;

我知道最好使用指针版本;我不会争论事实,但我不知道为什么它会更好。关于指针如何更好地分配内存,我得到了一个不太明确的答案,我想知道这里是否有人可以帮助我更好地理解这一点。

最佳答案

这不仅更好,而且是唯一可能的方法。

如果你在自身内部存储了一个 Node object,那么 sizeof(Node) 会是什么?它将是 sizeof(int) + sizeof(Node),这将等于 sizeof(int) + (sizeof(int) + sizeof(Node)),即将等于 sizeof(int) + (sizeof(int) + (sizeof(int) + sizeof(Node))) 等到无穷大。

这样的对象不可能存在。这是不可能

关于c++ - 为什么链表使用指针而不是在节点内存储节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29543780/

相关文章:

c++ - 单链表段错误问题

c++ - 什么是 void (*op)(T &) 和 void (*op)(T &, void *)?

pointers - 我如何在 Rust 中编写这个 C 函数?

从两个变量创建双常量指针

java - 链接列表,学生到某个学科

c++ - Visual Studio 在命令行中定义预处理器指令

c++ - 在 C++ 中打印一个 char*

c++ - C++ 中的错误消息 "Undefined reference error to"

c++ - 如果服务器未运行,async_connect 成功

c++ - 是否可以在没有拷贝的情况下将 std::vector<int> 作为参数传递给获得 std::vector<std::array<int, 3>> 的 fun?