这个声明究竟意味着什么是英文句子?

时间:2011-11-06 13:14:59

标签: c++ pointers

如果我写这段代码: Node* head;

我理解head是一个可变类型的Node,它存储一个变量的Node地址类型。

这是真的吗?

4 个答案:

答案 0 :(得分:4)

Node* head;

这意味着按名称head创建一个变量,它可以存储数据类型Node的另一个变量的地址。

简单来说,headNode类型的指针 此外,你永远不应该使用像这样的未初始化的指针,在创建它们时总是初始化它们。

Node* head = NULL;

答案 1 :(得分:2)

首先让我们直接了解一些定义。

  1. 指针 - 内存索引的数字值。
  2. 堆栈 - 负责保存局部变量值的内存区域
  3. 堆 - 负责保存长期数据的内存区域。
  4. 编译器 - 将编程语言中的代码转换为计算机可以理解的1和0的程序
  5. 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是对它的引用。

当您取消引用头部(做*头部)时,您将获得变量。