c巴拉巴拉 2023-09-04 23:27 采纳率: 87.5%
浏览 25
已结题

关于指针问题:int强转short*为什么输出0 0 3 4 5

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/144150048396173.jpg "#left"

int arr[ ]={1,2,3,4,5};

int强制转换成short ,访问两个字节,由原来的一个空间四个字节变为两个字节,*(p+i)=0,i自增四次,一次增加一个空间,一个空间两个字节,不应该是0 0 0 0 5吗,为什么是0 0 3 4 5,为什么是增加1是增加一个字节呢,int*里面也会是以字节存储的吗。脑子已经乱掉了,请mogul解答

  • 写回答

4条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-09-04 23:40
    关注

    空间还是那个空间大小, 原来是int 型,一个数组元素占4个字节长度, 强转成 short 类型指针,一个short数据只能访问 2个字节的空间。
    然后再看 *(p + i) , 这个 p 是 short 类型指针, p 只能访问 原来 int型的前两个字节,(p + 0) = 0 和 *(p + 1) = 0 要这两个才能把原来 一个int的数据都改成 0.,也就是 最后改了 前两个 int的数据。
    最终输出 0 0 3 4 5

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月14日
  • 已采纳回答 9月6日
  • 创建了问题 9月4日

悬赏问题

  • ¥20 遥感植被物候指数空间分布图制作
  • ¥20 Github上传代码没有contribution和activity记录
  • ¥20 SNETCracker
  • ¥15 数学建模大赛交通流量控制
  • ¥15 为什么我安装了open3d但是在调用的时候没有报错但是什么都没有发生呢
  • ¥50 paddleocr最下面一行似乎无法识别
  • ¥15 求某类社交网络数据集
  • ¥15 靶向捕获探针方法/参考文献
  • ¥15 很抱歉出现错误word不能启动(24),如何解决?
  • ¥15 javascript下载网络图片