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?
让我们逐行浏览您的代码。
首先,您创建了一个Point
名为p
. 所以,p
坐在内存的某个地方:
Memory: p:[x, y]
然后,您创建了一个Disk
被调用的d
,它将自己的Point
对象存储在其中。
Memory: p:[x, y] d:[center:[x, y], radius]
这些是完全独立的对象。当你用 修改Point
存储在d
时d.center.x=1.2
,它根本不影响p
。
因此,p
未初始化,读取未初始化变量的值会导致未定义行为,这意味着任何事情都可能发生,在这种情况下通常会获得一个随机值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句