learningOS开源操作系统社区
  • 首页
  • 训练营
  • 明星学员
  • 共建单位
  • 项目实习
  • 问答论坛
登录
    Copyright © 2024 opencamp.ai All rights reserved.
    关于(uint32_t *)ebp + 2;与((uint32_t *)ebp)[2];的区别(lab1练习5)
    匿名2023/07/31 19:52:02提问
      lab1student
    455

    (uint32_t *)ebp + 2;与((uint32_t *)ebp)[2];的区别 是什么?
    前者是取得地址,ebp地址+8的地址(ebp+4为返回地址,ebp+8为参数1的地址),
    注,当前指针的大小为4个字节,因此 (uint32_t*)ebp+2 实际上是 ebp地址+4*2的地址。
    后者是取得地址存储的值(解指针)
    即(uint32_t *)ebp + 2地址存放的值
    相当于*((uint32_t *)ebp + 2)
    回答(1)
    即可发布评论
      推荐问答
        Simple Empty
        暂无数据