指针问题

[复制链接]
1275|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一样。
编译后的汇编代码看看就清楚了。

评论

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

设置一个buffer,线程自动发送,用户只管向buffer写入。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

521

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部