访问结构元素时程序崩溃



结构体a的元素为int b和指向结构体的指针。程序在没有打印结果的情况下崩溃。

struct a{
int b{5};
a* next=new a;
a(){
next->b=3;
}

};
int main(){
a a1;
cout<<a1.b<<endl;
cout<<(*(a1.next)).b<<endl;
return 0;
}

我预计输出为:

5

3

a* next=new a;

您的a结构有一个名为next的成员,该成员默认由new初始化。程序创建的每个a实例都将有一个名为next的类成员,该类成员由new初始化。这就是类和默认类成员初始值设定项的工作方式。

正如我所说,这个成员是另一个结构a。当然,它还有一个名为next的成员,它将由new初始化。当然,就像结构体a的每个实例一样。

第二个struct a也将有一个next成员,就像所有a一样,它将由new初始化。a的第三个实例将有自己的next,它将由new初始化。

等等,直到你的计算机内存耗尽,创建一个结构as的无限链。

目前还不清楚你在这里的意图,但这回答了为什么你的程序崩溃的问题。

最新更新