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

如果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]的值

    评论

报告相同问题?

悬赏问题

  • ¥20 安装 opencv4nodejs 报错
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA
  • ¥20 csv格式数据集预处理及模型选择
  • ¥15 部分网页页面无法显示!