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() ) ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |