指针问题

[复制链接]
823|10
手机看帖
扫描二维码
随时随地手机跟帖
tianxiongweitxw|  楼主 | 2018-11-29 20:16 | 显示全部楼层 |阅读模式
本帖最后由 tianxiongweitxw 于 2018-11-29 20:23 编辑

        请教大师,用串口输出一个INT变量的低字节和高字节,以下两句:
        HexUartSend(*&Plat_time);
        HexUartSend(*(&Plat_time+1));
      现在的问题是,输出电脑显示两个永远都一样,一个变化,另外一个也跟着变化。想不明白是什么原因。

相关帖子

airwill| | 2018-11-29 21:22 | 显示全部楼层
Plat_time 是 int 类型的数据吧
&Plat_time 是指向  Plat_time 的指针, 类型是 int*
(*(&Plat_time+1) 是指向  Plat_time 之后一个 int 的指针, (不是高字节)
(*((char*)(&Plat_time)+1)  看看这样写可以吗

使用特权

评论回复
ayb_ice| | 2018-11-30 09:15 | 显示全部楼层
HexUartSend(Plat_time/256);高字节
HexUartSend(Plat_time%256);

使用特权

评论回复
gavinpeng2| | 2018-11-30 09:43 | 显示全部楼层
接楼上的:
HexUartSend(Plat_time>>8); //高字节
HexUartSend(Plat_time&0xff);// 低字节

使用特权

评论回复
tianxiongweitxw|  楼主 | 2018-11-30 15:40 | 显示全部楼层
问题是解决了,谢谢各位前辈,但我总想用指针直接搞定,有没有什么好办法?串口一次只能输出一个字节。

使用特权

评论回复
datouyuan| | 2018-12-1 14:39 | 显示全部楼层
tianxiongweitxw 发表于 2018-11-30 15:40
问题是解决了,谢谢各位前辈,但我总想用指针直接搞定,有没有什么好办法?串口一次只能输出一个字节。 ...

想用指针直接搞定,2楼已经告诉你了。

使用特权

评论回复
tianxiongweitxw|  楼主 | 2018-12-1 21:13 | 显示全部楼层
强行改成char型撸针强

使用特权

评论回复
tianxiongweitxw|  楼主 | 2018-12-1 21:17 | 显示全部楼层
airwill 发表于 2018-11-29 21:22
Plat_time 是 int 类型的数据吧
&Plat_time 是指向  Plat_time 的指针, 类型是 int*
(*(&Plat_time+1) 是指 ...

但怎么解释两个输出是一样的呢?

使用特权

评论回复
vrgood| | 2018-12-2 21:35 | 显示全部楼层
(&Plat_time+1)指向plat_time地址+2,也许凑巧是某个变量地址,内容和plat_time一样。
编译后的汇编代码看看就清楚了。

使用特权

评论回复
评论
qinlu123 2018-12-3 12:01 回复TA
解决问题的办法因人而异,你觉得楼主看得懂汇编 
千岁寒| | 2018-12-4 20:48 | 显示全部楼层
tianxiongweitxw 发表于 2018-11-30 15:40
问题是解决了,谢谢各位前辈,但我总想用指针直接搞定,有没有什么好办法?串口一次只能输出一个字节。 ...

设置一个buffer,线程自动发送,用户只管向buffer写入。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

71

主题

517

帖子

0

粉丝