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?
让我们逐行检查您的代码。
首先,您创建了一个名为 p
的 Point
。所以 p
位于内存中的某处:
Memory: p:[x, y]
然后,您创建了一个名为 d
的 Disk
,它在其中存储了自己的 Point
对象。
Memory: p:[x, y] d:[center:[x, y], radius]
这些是完全独立的对象。当你修改存储在d
中的Point
为d.center.x=1.2
时,它根本不会影响p
。
因此,p
未初始化,读取未初始化变量的值会导致undefined behavior,这意味着任何事情都可能发生,在这种情况下通常会得到一个随机值。
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?
让我们逐行检查您的代码。
首先,您创建了一个名为 p
的 Point
。所以 p
位于内存中的某处:
Memory: p:[x, y]
然后,您创建了一个名为 d
的 Disk
,它在其中存储了自己的 Point
对象。
Memory: p:[x, y] d:[center:[x, y], radius]
这些是完全独立的对象。当你修改存储在d
中的Point
为d.center.x=1.2
时,它根本不会影响p
。
因此,p
未初始化,读取未初始化变量的值会导致undefined behavior,这意味着任何事情都可能发生,在这种情况下通常会得到一个随机值。