Daryl_hc 2015-11-13 16:41 采纳率: 50%
浏览 2372

int型指针转成short型指针 然后自加一 地址移动四位?

一个int型指针强制转换成short型 然后自加一 为什么地址还是移动四个字节
而不是两个字节?
想不明白

  • 写回答

5条回答 默认 最新

  • threenewbee 2015-11-13 16:55
    关注

    不同的编译器不同。一些编译器,为了优化处理器对内存的访问,所有的变量按照4字节对齐。
    我这里是2
    http://codepad.org/lNNoQMVC

    #include <stdio.h>
    
    int main()
    {
        int * ptr = 0;
        short * sptr = ((short *)ptr + 1);
        printf("%d %d", (int)ptr, (int)sptr);
    }
    

    0 2

    还有可能,你的括号打错了,导致先算了加1,然后才强制转换。

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置