鱼C论坛

 找回密码
 立即注册
查看: 1973|回复: 15

为什么要用栈呢,入栈的作用是什么

[复制链接]
最佳答案
0 
发表于 2016-3-8 19:38:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
为什么要用栈呢,入栈的作用是什么???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
54 
发表于 2016-3-8 21:28:26 | 显示全部楼层
为什么要发帖呢,百度的作用是什么???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2016-3-8 21:36:41 | 显示全部楼层
~风介~ 发表于 2016-3-8 21:28
为什么要发帖呢,百度的作用是什么???


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
54 
发表于 2016-3-8 22:12:40 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
41 
发表于 2016-3-14 11:32:15 | 显示全部楼层
~风介~ 发表于 2016-3-8 22:12
http://www.cnblogs.com/scnutiger/p/3770991.html

这个说的很好,基本表达了意思~~我想如果要有深刻体会,还是要在应用中才有。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2016-5-20 17:17:36 | 显示全部楼层
栈就相当于一个书柜  可以放一些书在里面    入栈就是把数据放到里面  ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2016-5-21 23:02:48 | 显示全部楼层
感谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2018-5-6 15:19:41 | 显示全部楼层
发帖和百度都是一种好习惯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2018-6-1 23:52:47 | 显示全部楼层
一个寄存器可能被多次使用,有了栈以后,可以保护好数据,在调用的时候,进行恢复。然后栈还可以进行空间开辟。个人理解。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2018-6-4 14:14:39 | 显示全部楼层
多学学吧,然后呢,这个栈的机制,是很有用的一个东西。好比说啊,你去书店里砍树去。然后呢,你的包包就得临时存放在人家柜台那里。这个时候,那个柜台,就是一个栈。其它的,暂时也说不出来。但是,可以确定,这是一个很有用的工作机制。
    计算机变成里面,很多的东西,其实,都是可以给你诸多的思考的东西。当然,老外的话,他也不见得就去想过,去总结过这件事。但是,客观上,这里面,还是有很多的东西,哲学化的问题,这种收获,都是可以得到的。栈,个人,就非常喜欢这个机制。
    C语言里面,谈到,局部变量放在栈中,动态内存分配的这个变量,好像是放在堆中的。然后呢,局部变量,放在栈中,栈的空间有限,当时觉得,这个栈不如堆有用。实际上,不见得。这种栈的工作机制,你可以联想一下你去书店里把东西放在柜台,以及说,有一天啊,你正在吃饭,突然要接个电话,然后再回头来吃饭,这里面,都有这种栈机制的应用。算是比较生活化的一个东西。很有趣的一个东西吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2018-6-5 15:13:05 From FishC Mobile | 显示全部楼层
据说是为了保护现场  你call之前把寄存器全部入栈  结束时出栈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2018-6-7 07:40:05 | 显示全部楼层
伤感、曲调 发表于 2018-6-5 15:13
据说是为了保护现场  你call之前把寄存器全部入栈  结束时出栈

我感觉,你应该是一个计算机科班出身的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
13 
发表于 2018-6-8 09:15:54 | 显示全部楼层
我用白话文
内存中没有栈一说,只是SS:SP寄存器指向的地址是栈对吧
你应该考虑的是为什么要有先进后出的问题,内存中后进先出这种模式就是栈的表示
后进先出能干啥?为了啥?打个不恰当的比方,就打比方别挑毛病各位
a = 1;
b = 2;
c = a+b;
d = c+a;
想知道c的结果对吧 必须 a,b相加
想知道d的结果,必须c,a相加
那么如果这些都是函数,那么我先运行c,后运行d,这时候就像我运行c之后把他扔下面,然后被d使用,只有d不用了我才能逐级把你释放,递归一直调用自己,你咋能把原来的值释放,必须最后的解放了一层层的剥洋葱
慢慢悟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
23 
发表于 2018-6-10 10:50:40 | 显示全部楼层
你跟你女朋友出去旅游,需要找个地方住吧?那就要去住客栈了
然后住客栈需要付钱啊,所以你走前面进去给钱,你女朋友跟着进去
手续办完安顿好你们要出去购物去玩,你女朋友肯定比你积极
所以出去的时候就变成你女朋友在前面你在后面
栈就是暂时给你们个容身之所,然后按先进后出,先出后进就这样的顺序进出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
19 
发表于 2018-7-7 21:59:46 | 显示全部楼层
虽然是坟贴,还是想表达下自己的意见。
内存在CPU看来就是一块连续的存储单元,但是物理上是由不同的存储器构成。把所有存储器组合在一起,由cpu编号,就是所谓的内存地址空间。每一个编号都是唯一,编号就是地址
cpu既然要处理数据,数据在哪里?在内存。由于CPU管理所有部件,那么他肯定对内存一套自己的管理方法。
cs指向的内存地址数据   cpu就按照指令处理
ds指向的内存地址数据   cpu就按照数据处理
ss指向的内存地址数据   cpu就按照栈处理

栈只是一种cpu对内存的操作手段,sp又要加又要减比较麻烦,那么就出了对应的指令 push pop 。只是管理手段而已,你也可以设计一个子函数,实现自己的push pop
关于为什么有栈的设计?我也不清楚。
栈原理:先进后出     为什么这样?CPU设计的别问为什么,为什么有姓名?为什么奥迪不叫迪奥,人家乐意,当然这样设计肯定有别人自己的原因。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
3 
发表于 2018-7-19 13:43:43 | 显示全部楼层
个人理解:栈是为了实现类似C语言局部变量的功能!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2018-9-21 22:52

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表