weixin_45907245 2020-10-19 19:58 采纳率: 0%
浏览 42

如果int x = 20,*p = &x,如果p的值为1001, p+1的值为1003, p-2的值为997,这是为什么???

C语言的题,为什么不是1002?这题是一道应试题目,没有代码,我按照这个说的放在了IDE上,结果是1005,和993,然后就晕了,难道题目错了???

  • 写回答

2条回答 默认 最新

  • buptXiaoY 2020-10-19 20:55
    关注

    因为p是地址变量,而int类型的长度是2字节,1001的地址和1002的地址都x占用了,而p+1的意思是指的地址p向下加一,p指向下一个变量,这个变量
    在内存中刚好是x的下一个,被因此p向下移动一位是1003,至于为什么是1005和993是因为不同机器定义int占用的字节数不一样。
    用数组比较好解答,如果你定义一个int类型的数组长度为5,然后使用p指向
    该数组,你输出*p发现是x[0]的值而*(p++)是x[1]的值

    评论

报告相同问题?