#include<iostream>
using namespace std;
class node{
public:
node *next;
int data;
}*root; //声明点1
int main(){
node *root; //声明点2
for(int i = 0; i < 10; i++) {
if(root == NULL) {
root = new node;
root->data = 3;
}
}
if(root !=NULL) {
cout <<root->data;//在声明点1 程序不会报错 在声明点2 程序报错
}
}
还有一个问题就是 我假如 在 声明点2 给root分配内存后,在for循环里一直对root的next节点分配内存,最终并不会报错。代码如下
#include<iostream>
using namespace std;
class node{
public:
node *next;
int data;
};
int main(){
node *root = new node(); //声明点2
node *cur = root;
for(int i = 0; i < 10; i++) {
cur->data = i;
cur->next = new node;
cur = cur->next;
}
cout <<root->next->next->next->data;//可以正常调用
}
不清楚具体原因,烦请各位大神能指点下小弟!
申明点1是全局变量,默认为nullptr。
申明2是局部变量,没有默认值。改成node *root = nullptr;试试