Morezy 发表于 2015-8-14 19:50:55

栈为空的的栈顶指针

在栈为空时,单元的偏移地址为栈最底部的单元的偏移地址+2,这里的2是字节吧?也就是一个字。那么在下面代码中为什么栈顶sp是32呢??前面一共有16个字,32个字节,就是0-31,再+2不是33吗?为什么是32??我有点弄混了。。

星空·无限 发表于 2015-8-15 21:00:14

共有16个字,有32个字节,那么偏移地址变化是从0开始到31结束,这里就是32个字节了。栈空是栈顶指针指向的是栈底的下一个单元(偏移31+1=偏移为32),怎么不对啊!你说的32这个位置已经超出栈空间了,因为内存中是从0开始排的!

Morezy 发表于 2015-8-15 21:30:09

星空·无限 发表于 2015-8-15 21:00
共有16个字,有32个字节,那么偏移地址变化是从0开始到31结束,这里就是32个字节了。栈空是栈顶指针指向的 ...

不是,小甲鱼不是说栈为空时sp+2吗?突然又变成+1了,我似懂非懂了

星空·无限 发表于 2015-8-15 21:45:33

你把 概念搞混了。pop是先取值在sp+2,栈空时sp指向栈底+1位置!

Morezy 发表于 2015-8-17 22:00:45

好的,我知道了,谢谢~
页: [1]
查看完整版本: 栈为空的的栈顶指针