关于(uint32_t *)ebp + 2;与((uint32_t *)ebp)[2];的区别(lab1练习5)
匿名2023/07/31 19:52:02提问
    lab1student
217

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