关于栈和top指针。

pk1 2010-12-16 10:47:48
局部变量存储在栈中,当int a;再 int b;时先为a开辟一块空间,再为b开辟空间,并且a的地址大于b的地址,我记得数据结构曾讲过栈顶指针在元素入栈时要++,而且始终指向栈顶元素的下一个位置;初始top指向 a,然后top++,岂不是指向a的后面,而不是指向b的上面啊?求详细的内存解析,感谢能够帮助我的人。
...全文
253 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
CJBAAA 2010-12-17
  • 打赏
  • 举报
回复
你在C语言看到的栈,和内存中的栈说得不是一回事,C语言的栈是一种算法。内存栈是一种实际的物理存储不一样的
CJBAAA 2010-12-17
  • 打赏
  • 举报
回复
强烈建议楼主去看看汇编原理,你就一切就明白了。 看看书吧,有好处的
AnYidan 2010-12-17
  • 打赏
  • 举报
回复
楼上说的是,对于计算机体系结构来说,一般都是栈向下增长(当然也有向上增长的),而对于数据结构,主要是强调栈的特性(先进后出),所以怎么实现都可以,用++更容易理解。

这些部分归编译器,楼主有兴趣可以看看相关的书籍
pk1 2010-12-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lei001 的回复:]
a的地址是小于b的地址
[/Quote]
但事实是a的地址大于b的地址
luciferisnotsatan 2010-12-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yterrencelau 的回复:]

楼上说的是,对于计算机体系结构来说,一般都是栈向下增长(当然也有向上增长的),而对于数据结构,主要是强调栈的特性(先进后出),所以怎么实现都可以,用++更容易理解。
[/Quote]
+1
YTerrenceLau 2010-12-16
  • 打赏
  • 举报
回复
楼上说的是,对于计算机体系结构来说,一般都是栈向下增长(当然也有向上增长的),而对于数据结构,主要是强调栈的特性(先进后出),所以怎么实现都可以,用++更容易理解。
bluejays 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 lds_lcu 的回复:]
我记得数据结构曾讲过栈顶指针在元素入栈时要++,而且始终指向栈顶元素的下一个位置;
[/Quote]
这是数据结构理论上的概念。
实际程序里面有很多栈都是向下增长的:push的时候栈指针理论上是++,实际上是在减少。push的时候栈顶向下移,pop的时候则是向上
lei001 2010-12-16
  • 打赏
  • 举报
回复
a的地址是小于b的地址
sduxiaoxiang 2010-12-16
  • 打赏
  • 举报
回复
看看书

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧