我无法理解一些类型转换语法,例如:
float f=7.0;
short s=*(short *)&f;
这里发生了什么事情
short s=*(short *)&f
?看起来我们将something
转换为指向short的指针,然后将s
初始化为由something
所指向地址上存储的值。现在,这个
something
看起来像是变量f
的地址。因此,如果something
= f的地址
,那么我们似乎是把f的地址
作为某个short的指针,然后对其进行解引用操作。我知道我说错了,但我似乎无法想象它的过程。谢谢。
&f
是一个指向浮点数的指针。我想我面临的问题是,我会将&f
视为一个值,即一个地址,而不是一个变量/指针。所以这里发生的是将“指向浮点数的指针”强制转换为“指向短整型的指针”,对吗? - Naruto Uzumaki&f
是一个地址,而不是变量。然而,在C语言中,不仅变量,所有东西都有明确定义的类型。在这里,&f
的类型是float *
,即“指向浮点数”的指针。 - Oliver Charlesworth&f
是一个指向浮点数的指针,这样说正确吗?当我发帖说&f
是一个变量/指针时,我基本上是指&f
是一个指针(因为指针只是存储地址的“变量”,有时为了自己的清晰度,我会把指针称为变量。我应该放弃这个习惯:)) - Naruto Uzumaki