程序编译但在运行时,它会输出'asd12',然后是'asd45',然后是'Segmentation fault(core dumped)'。它不会打印'asd67'。有人可以帮我解决这个问题吗?
struct node{
int a[3];
int b;
int c;
node* parent;
node(){
b=0;
parent=NULL;
}
};
int main(){
node* x;
node* y;
cout << "asd12"<< endl;
x->a[0]=1;x->a[1]=1;x->a[2]=1;
cout << "asd45"<< endl;
y->a[0]=1;y->a[1]=1;y->a[2]=1;
cout << "asd67"<< endl;
return 0;
}
答案 0 :(得分:2)
您已声明x和y是指向struct node对象的指针,但您没有创建对象。
最简单的解决方案是从
node* x;
node* y;
于:
node x;
node y;
会创建自动节点变量,并允许您像这样访问数组元素:
x.a[0] = 1;
您也可以使用
创建动态变量node* x = new node;
node* y = new node;
// access vars using pointer syntax
x->a[0] = 1;
// when finished with x and y, delete the created objects
delete x;
delete y;