如何使用C中的浮点指针访问double值并使用单个语句返回值?
假设我有一个浮动指针
float * ptr;
并且我希望仅使用一个语句来检索double值。现在问题是浮点指针将能够在单个语句中返回32位值,而我希望返回64位值。这是一个概念性问题,而不是一个实际问题。
由于
答案 0 :(得分:2)
只需return *ptr;
。如果函数的返回类型为double
,则float
值将自动转换为double
。
如果您没有立即返回值或将其分配给double
但希望将其转换为double
以进行其他算术运算,则可以使用(double) *ptr
执行此操作。此表达式首先检索float
处的ptr
,然后将值转换为double
。
如果ptr
的值为float
,则无法从中“检索double
值”。你无法找回那里没有的东西。您只能检索那里的float
并将值(在检索后)转换为double
。
如果ptr
的值是double
值,那么您不应该使用指向float
的指针指向它,因此应修复代码的其他部分以避免此
答案 1 :(得分:1)
施展它。
ValueInPointer = *(double*)pfloat
答案 2 :(得分:1)
如果您有一个名为float*
的{{1}},则可以使用。
ptr
请注意,除非*(double*)ptr;
真正指向ptr
,否则这不会产生有意义的结果。特别是,double
或*(double*)ptr
无意义。