如何使用 C 中的浮点指针访问双精度值并使用单个语句返回值?
假设我有一个浮点指针
浮动 *ptr;
我希望只使用一个语句来检索一个双精度值。现在的问题是浮点指针将能够在单个语句中返回 32 位值,而我希望返回 64 位值。这是一个概念问题,而不是一个实际问题。
谢谢
投吧。
ValueInPointer = *(double*)pfloat
简直了return *ptr;
。如果函数的返回类型是double
,float
值会自动转换为double
。
如果您没有立即返回值或将其分配给 adouble
但希望将其转换为 adouble
以进行额外的算术运算,您可以使用(double) *ptr
. 此表达式首先检索float
at ptr
,然后将值转换为 a double
。
如果 at 的值ptr
是一个float
值,则无法从中“检索一个double
值”。您无法检索不存在的内容。您只能检索float
那里的值并将值(在检索到之后)转换为double
.
如果 at 的值ptr
是一个double
值,那么您不应该用指向它的指针指向它float
,因此应该修复代码的其他部分以避免这种情况。
如果你有一个float*
被调用的ptr
,你可以使用。
*(double*)ptr;
ptr
请注意,除非确实指向 a ,否则这不会产生有意义的结果double
。特别是,要么*(double*)ptr
或*ptr
将没有意义。