加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C为什么void指针不能存储浮点值?

发布时间:2020-12-16 06:47:55 所属栏目:百科 来源:网络整理
导读:我正在尝试返回浮点值但是当我打印出来时,我得到0.0. float floating = 4.5;void* function(){ void* test = floating; return test;}int _tmain(int argc,_TCHAR* argv[]){ printf("%fn",test()); return 0;} 关于它为什么不打印4.5的任何想法?对不起,如
我正在尝试返回浮点值但是当我打印出来时,我得到0.0.

float floating = 4.5;

void* function(){
    void* test = &floating;
    return test;
}

int _tmain(int argc,_TCHAR* argv[]){
     printf("%fn",test());
     return 0;
}

关于它为什么不打印4.5的任何想法?对不起,如果这是一个noob问题,我还是比较新的.

解决方法

假设你的function()实际拼写为test(),%f需要一个浮点值.你提供的是空白*.这是错的,undefined behaviour.

解决方案:void是一个不完整的类型,您不能直接取消引用void指针.在解除引用之前,需要将指针强制转换为所需类型.例如,

printf("%fn",*( (float *) test() ) );

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读