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

时间:2018-03-04 09:07:23

标签: c++ structure

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呢?

1 个答案:

答案 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,这意味着任何事情都可能发生,在这种情况下通常会得到一个随机值。