请教一个问题

haichunzhao 2009-12-04 07:58:52
int a[5]={1,2,3,4,5};
求*(char*)((short)a+2)?
搞不懂这是在做什么,请教大家,谢谢!
...全文
85 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
haichunzhao 2009-12-04
  • 打赏
  • 举报
回复
是*(char*)((short*)a+2)
deng1243 2009-12-04
  • 打赏
  • 举报
回复
应该是
*(char*)((short)(a+2)) 吧
haichunzhao 2009-12-04
  • 打赏
  • 举报
回复
那可能我记错了。
aizibion 2009-12-04
  • 打赏
  • 举报
回复
囧,楼主得题目有bug
*(char*)((short)a+2)实际应为
*(char*)((short*)a+2)

查看a的内存结构以字节排(也许不同操作系统有不同)如下:
01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00

a首先退化为整数指针,被强转为short型,一般short型为2字节,故(short*)a+2相当于将指针移位到第5字节处,再强转指针为char型,只后解引用,实际值为0x02,整形数为2,字符型为笑脸
HelloDan 2009-12-04
  • 打赏
  • 举报
回复
从数据存储方面来解释是没有问题的。都是访问一个地址的数据,只是数据变成了char类型了。
bean11222 2009-12-04
  • 打赏
  • 举报
回复
我觉得数据地址被截断!这语句可以编译通过 但是运行不了 有严重的逻辑错误!
lovesi3344 2009-12-04
  • 打赏
  • 举报
回复
断章取义?????????

64,426

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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