黑马程序员技术交流社区

标题: 栈到底是什么?求解释! [打印本页]

作者: 剑气近    时间: 2014-6-16 22:32
标题: 栈到底是什么?求解释!
本帖最后由 剑气近 于 2014-6-18 23:29 编辑

栈到底是什么东西??
我也学过计算机组成原理,也简单讲了栈,就是什么先进后出,压栈出栈什么的,这个我明白,但是这个怎么跟c语言的栈联系起来呢??

c语言如定义变量int i;是不是就是再栈区开辟空间?为什么是在栈区呢,而不是直接在内存中其他区域?

而且栈有先进后出的特点,这有什么用吗??

定义变量在栈开辟内存空间的话,先进后出是不是对变量调用会用影响??

栈带地有什么用处?

大虾们,救助一下无知的小弟吧!

作者: 王海江1    时间: 2014-6-16 23:42
内存分五大块,栈是其一,用来存储局部变量
作者: siegee    时间: 2014-6-17 09:36
变量有的数据类型和数据的存储类别特性,它的空间大小由编译器决定的,随函数消失而消失,系统自动回收内存。
作者: 欢欢    时间: 2014-6-17 14:58
因为c语言的变量都是有作用域的,它的作用域就是从它被定义开始,到它的大括号结束为止,大括号结束的时候这个变量开辟的空间就被释放了。你看一段代码,c语言定义变量总是在它的作用域的最上面定义,中途开辟空间的变量往往是这个函数又调用了别的函数,调用语句一结束,被调用的这个函数内部的变量也就随之出栈释放。
这样总结一下,往往最先定义的变量最后才被释放,其实栈内存也是因为这个规律应用而生的。
不知道这样理解对不对,如有不对之处还请指教!
作者: 剑气近    时间: 2014-6-17 23:44
欢欢 发表于 2014-6-17 14:58
因为c语言的变量都是有作用域的,它的作用域就是从它被定义开始,到它的大括号结束为止,大括号结束的时候 ...

谢谢,这样解释我明白了
作者: 诸葛佰通    时间: 2014-6-18 00:05
欢欢 发表于 2014-6-17 14:58
因为c语言的变量都是有作用域的,它的作用域就是从它被定义开始,到它的大括号结束为止,大括号结束的时候 ...

同样受教了。。。 正好这个概念我也不是太清楚。。。:lol
作者: 但愿''专注..    时间: 2014-6-19 10:10
计算机内存中的一个概念而已吧。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2