C ++嵌套结构初始化和访问成员

c++ nested structure initialization and accessing the members

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?

让我们逐行检查您的代码。

首先,您创建了一个名为 pPoint。所以 p 位于内存中的某处:

Memory:  p:[x, y]

然后,您创建了一个名为 dDisk,它在其中存储了自己的 Point 对象。

Memory:  p:[x, y]                     d:[center:[x, y], radius]

这些是完全独立的对象。当你修改存储在d中的Pointd.center.x=1.2时,它根本不会影响p

因此,p未初始化,读取未初始化变量的值会导致undefined behavior,这意味着任何事情都可能发生,在这种情况下通常会得到一个随机值。