keil C51 里面 编译后无法使用 (*(char*)(&temp))

xixihan3211 2015-06-07 04:11:39
C51里比如下面的语句 编译后无法使用
buf[] 里面是char型 比如
char buf[5]={0xcc,0x25,0xb8,0xc1,0x6a}; 
(*(char*)(&temp))=buf[0];
(*((char*)(&temp)+1))=buf[1];
(*((char*)(&temp)+2))=buf[2];
(*((char*)(&temp)+3))=buf[3];




如何解决
...全文
355 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mangoalx 2015-06-10
  • 打赏
  • 举报
回复
我觉得可能是指针加减的问题,楼主试试4楼的办法
woshi_ziyu 2015-06-10
  • 打赏
  • 举报
回复
楼主可以试试1楼的方法
jiqiang01234 2015-06-10
  • 打赏
  • 举报
回复
如果是整数直接要memcpy给数组,或者反之。需注意内存字节大小端的问题。
xixihan3211 2015-06-09
  • 打赏
  • 举报
回复
引用 6 楼 jiqiang01234 的回复:
[quote=引用 5 楼 xixihan3211 的回复:] [quote=引用 2 楼 jiqiang01234 的回复:] 直接memcpy就行,这么费劲赋值干嘛
因为是用特定代码转换来的 char 所以额只好用在这个办法复原 vs中可以完美运行 到了kei c51l就不行了[/quote] 试过memcpy不行了?[/quote] 试过,这个可以用。 但数值好像有偏差。
jiqiang01234 2015-06-09
  • 打赏
  • 举报
回复
引用 5 楼 xixihan3211 的回复:
[quote=引用 2 楼 jiqiang01234 的回复:] 直接memcpy就行,这么费劲赋值干嘛
因为是用特定代码转换来的 char 所以额只好用在这个办法复原 vs中可以完美运行 到了kei c51l就不行了[/quote] 试过memcpy不行了?
xixihan3211 2015-06-09
  • 打赏
  • 举报
回复
引用 2 楼 jiqiang01234 的回复:
直接memcpy就行,这么费劲赋值干嘛
因为是用特定代码转换来的 char 所以额只好用在这个办法复原 vs中可以完美运行 到了kei c51l就不行了
dceacho 2015-06-08
  • 打赏
  • 举报
回复
(*((char*)(&temp)+1)) 小括号像是错了 * (char*)(&temp+1)=buf[0];
of123 2015-06-08
  • 打赏
  • 举报
回复
试试: ((char *) temp)[0] = buf[0]; ((char *) temp)[1] = buf[1]; ......
jiqiang01234 2015-06-07
  • 打赏
  • 举报
回复
直接memcpy就行,这么费劲赋值干嘛
worldy 2015-06-07
  • 打赏
  • 举报
回复
&buf[0]才是地址

27,511

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧