struct Point
{
double x,y;
};
Point p;
struct Disk
{
Point center;
int radius;
};
Disk d;
int main()
{
d.center.x=1.2;
cout<<p.x;
}
有人可以解释一下这段代码的输出吗? 为什么我没有得到x的值为1.2和0呢?
答案 0 :(得分:0)
让我们逐行完成您的代码。
首先,您创建了一个名为Point
的{{1}}。所以p
坐在记忆中的某个地方:
p
然后,您创建了一个名为Memory: p:[x, y]
的{{1}},它将自己的Disk
对象存储在其中。
d
这些是完全独立的对象。当您使用Point
修改Memory: p:[x, y] d:[center:[x, y], radius]
中存储的Point
时,它根本不会影响d
。
因此,d.center.x=1.2
未初始化,读取未初始化变量的值会导致undefined behavior,这意味着任何事情都可能发生,在这种情况下通常会得到一个随机值。