C语言:指针取地址错误记录

在C语言中尝试将浮点数(float)拆分为4个字节时,遇到指针取地址错误。原始代码通过指针加1的方式尝试访问下一个字节,但未正确转换指针类型。错误在于`&Vx+1`实际上增加了4个字节,而非1个字节。修正方法是先将`&Vx`转换为字节指针,然后逐字节访问。最终修正后的代码成功实现了浮点数到字节数组的拆分。
摘要由CSDN通过智能技术生成

C语言:指针取地址错误记录

这个问题是在用指针将stm32浮点数拆分为4个字节时遇到的,如下代码是错误的(这里u8是unsigned char):

	  float Vx=200.5;
	  buf[0]=*((u8*)(&Vx+0));
	  buf[1]=*((u8*)(&Vx+1));
	  buf[2]=*((u8*)(&Vx+2));
	  buf[3]=*((u8*)(&Vx+3));

错误原因
Vx是浮点数,&Vx+1实际上是Vx的地址加上4个字节,而不是一个字节,需修改成(u8*)&Vx+1,需先将&Vx强制转换为字节指针,才能实现功能
最终修改为:

    float Vx=200.5;
	  buf[0]=*((u8*)&Vx+0);
	  buf[1]=*((u8*)&Vx+1);
	  buf[2]=*((u8*)&Vx+2);
	  buf[3]=*((u8*)&Vx+3);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值