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

c++ nested structure initialization and accessing the members

本文关键字:访问 成员 初始化 嵌套 结构 C++      更新时间:2023-10-16
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.center.x=1.2 修改存储在 d 中的Point时,它根本不影响p

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