其他分享
首页 > 其他分享> > c – 创建链表时使用新运算符

c – 创建链表时使用新运算符

作者:互联网

在以下程序中:

// illustration of linked list
#include <iostream>

using namespace std;

struct node {
    int data;
    struct node* next;
};

struct node* buildList();

int main() {

struct node* head = buildList();
cout << head->data;
}

struct node* buildList() {
    struct node* head = NULL;
    struct node* second = NULL;
    struct node* third = NULL;

    head = new node;      // builds up a pointer structure on heap
    second = new node;
    third = new node;

    head->data = 1;
    head->next = second;

    head->data = 2;
    second->next = third;

    head->data = 3;
    third->next = NULL;

    return head;
}

我不知道新操作符在这里的工作.他们执行什么任务? (我读到它在堆上分配空间.但我不知道它是什么意思)如果我删除这些语句没有输出,程序崩溃.这是为什么 ?

解决方法:

头,第二和第三变量是指向内存中节点的指针.但是,在使用它们之前,它们必须指向内存中的有效节点.这是新运算符的用武之地.堆只是一个已分配给程序的内存区域,用于动态创建对象(而不是堆栈.有关差异,请参阅here).

标签:c,list,visual-c,linked-list,new-operator
来源: https://codeday.me/bug/20190826/1733884.html