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

(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
      暂无数据