A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 剑气近 中级黑马   /  2014-6-16 22:32  /  1909 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 剑气近 于 2014-6-18 23:29 编辑

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

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

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

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

栈带地有什么用处?

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

评分

参与人数 1技术分 +1 收起 理由
ios风痕 + 1

查看全部评分

6 个回复

倒序浏览
内存分五大块,栈是其一,用来存储局部变量
回复 使用道具 举报
变量有的数据类型和数据的存储类别特性,它的空间大小由编译器决定的,随函数消失而消失,系统自动回收内存。
回复 使用道具 举报
因为c语言的变量都是有作用域的,它的作用域就是从它被定义开始,到它的大括号结束为止,大括号结束的时候这个变量开辟的空间就被释放了。你看一段代码,c语言定义变量总是在它的作用域的最上面定义,中途开辟空间的变量往往是这个函数又调用了别的函数,调用语句一结束,被调用的这个函数内部的变量也就随之出栈释放。
这样总结一下,往往最先定义的变量最后才被释放,其实栈内存也是因为这个规律应用而生的。
不知道这样理解对不对,如有不对之处还请指教!

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
欢欢 发表于 2014-6-17 14:58
因为c语言的变量都是有作用域的,它的作用域就是从它被定义开始,到它的大括号结束为止,大括号结束的时候 ...

谢谢,这样解释我明白了
回复 使用道具 举报
欢欢 发表于 2014-6-17 14:58
因为c语言的变量都是有作用域的,它的作用域就是从它被定义开始,到它的大括号结束为止,大括号结束的时候 ...

同样受教了。。。 正好这个概念我也不是太清楚。。。:lol
回复 使用道具 举报
计算机内存中的一个概念而已吧。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马