0 c++
请向我解释包含变量i初始化的行
struct vector
{
float value;
};
int main()
{
vector v3;
v3.value = 5.0f;
float i = *(float*)&(v3);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
&(v3)
Run Code Online (Sandbox Code Playgroud)
该地址v3的类型为vector*。
(float*)&(v3)
Run Code Online (Sandbox Code Playgroud)
现在,我们将该地址转换为类型float*。
*(float*)&(v3)
Run Code Online (Sandbox Code Playgroud)
最后,我们读取其中的内容float*并i使用值进行初始化。
这里涵盖了这个相当复杂的过程的有效性:通过C强制转换访问结构的第一个字段是否违反严格的别名?但是,总而言之,对于问题中描述的特定情况,使用POD结构,标准表示强制转换有效。
写会更有意义
float i = v3.value;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
689 次 |
| 最近记录: |