如果我写这段代码:
Node* head;
我理解head是一个可变类型的Node,它存储一个变量的Node地址类型。
这是真的吗?
答案 0 :(得分:4)
Node* head;
这意味着按名称head
创建一个变量,它可以存储数据类型Node
的另一个变量的地址。
简单来说,head
是Node
类型的指针
此外,你永远不应该使用像这样的未初始化的指针,在创建它们时总是初始化它们。
Node* head = NULL;
答案 1 :(得分:2)
首先让我们直接了解一些定义。
Node *head;
这样做是为指针分配堆栈空间。请注意,仅分配指针的空间,而不是数据的空间。现在Node
是类型。这告诉编译器该位置有哪些数据。它还告诉编译器如何与数据交互。
Node *head = new Node();
这为堆栈上的指针分配空间。然后它在堆中分配空间并返回要存储在堆栈空间中的地址(索引)。请记住,在函数返回后,堆栈上的数据会消失,因此如果不调用delete
来删除堆中的数据或传递引用,则当函数返回时,您无法访问数据或删除它;这称为内存泄漏。
Node head;
但是,此声明为堆栈上的Node对象的所有数据分配空间。它与堆的分配(上面的一个例子)之间的主要区别是这个变量是LOCAL。即它会在当前函数返回后消失。
答案 2 :(得分:1)
head
是指向内存的指针,格式为Node
。
指针是一个存储内存地址的变量。
http://www.cplusplus.com/doc/tutorial/pointers/
计算机的内存可以被想象成一连串的记忆 单元格,每个计算机管理的最小尺寸(一个字节)。 这些单字节存储单元以连续方式编号,因此 因为,在任何内存块中,每个单元格都具有相同的数字 前一加一。
答案 3 :(得分:-3)
Node *head
就是你写的,这里*head
是Node类型的“变量”,head是对它的引用。
当您取消引用头部(做*头部)时,您将获得变量。