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