请向我解释包含变量i
初始化的行
struct vector
{
float value;
};
int main()
{
vector v3;
v3.value = 5.0f;
float i = *(float*)&(v3);
return 0;
}
答案 0 :(得分:5)
&(v3)
这会使v3
的地址为vector*
。
(float*)&(v3)
现在我们将该地址转换为float*
类型。
*(float*)&(v3)
最后,我们阅读了float*
的内容并使用该值初始化i
。
此处涉及这个相当复杂的过程的有效性:Does accessing the first field of a struct via a C cast violate strict aliasing?总而言之,对于问题中描述的特定场景,使用POD结构,标准表明转换是有效的。
写
会更有意义float i = v3.value;
答案 1 :(得分:0)
就像这样(我认为:)):
看起来对吗?