打印

指针问题

[复制链接]
995|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);// 低字节

使用特权

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

使用特权

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

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

使用特权

评论回复
7
tianxiongweitxw|  楼主 | 2018-12-1 21:13 | 只看该作者
强行改成char型撸针强

使用特权

评论回复
8
tianxiongweitxw|  楼主 | 2018-12-1 21:17 | 只看该作者
airwill 发表于 2018-11-29 21:22
Plat_time 是 int 类型的数据吧
&Plat_time 是指向  Plat_time 的指针, 类型是 int*
(*(&Plat_time+1) 是指 ...

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

使用特权

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

使用特权

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

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

使用特权

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

本版积分规则

72

主题

520

帖子

0

粉丝