栈和堆怎么理解怎么理解?

怎样理解一个数组是存在栈里还是堆里?更白的是什么是栈什么是堆?怎么理解怎么理解?

理解堆与栈

一、引言:
    一直不太明白堆与栈到底是什么,是指一块内存区呢,还是指一种数据结构?编写程序中总提到内存分配的栈与堆的区别,静态与动态分配等,总也弄不明白,隐约知道一点,但总分不清堆与栈到底是一块内存区还是内存分配的方式,或者只是一种数据结构???

跟杨惠讨论如何建立决策树的时候,她说实际上就是进栈出栈,当时真是一头雾水呀。隐约知道《......
答案就在这里:理解堆与栈
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

http://www.cnblogs.com/kira2will/p/3957545.html

很简单,你将盏理解为一个乒乓球桶,最先放进去的乒乓球,如果你想要取出来它,那么久必须将它上面所有的乒乓球都取出来。
也就是说,最后放进去的最先出来。每次操作的只能是栈顶的那个对象。所以盏的特点就是:后进先出。
堆你可以理解为一个大碗,同样装有很多的乒乓球,但是你想要取哪一个乒乓球都可以,你想取A乒乓球,跟他是第几个放入这个碗的并没有太大的关系。
所以堆的特点就是:随你便的取。(但是必须放到里面)

堆就是一片存储空间,但是没有存储规则,随便存的,所以取得时候也就是随便取。
栈也是存储空间,但是有一定的存储规则,类似于羽毛球筒,最先放进去的球,肯定是最后一个才能拿出来

说白了,堆和栈都是在内存里开辟出来的一块专门的区域。
堆,又称队列,是先入先出的结构,就像排队的先来后到一样(当然还有循环队列首尾相连,这个更常用),如果你去看数据结构方面的书籍,看到这里也很好理解。
栈,是后入先出的结构,数据进栈又称压栈。楼上几位的例子比较形象,我就不赘述了。
但需要注意的是,栈和堆原本只是普通的内存区,但是因为人为或者系统的定义设计,使得它们有了不同的性质,可以用在不同的场合。像递归,就是隐式利用了栈结构的例子。

不好意思,混淆了堆和队列的概念~不过不影响,堆也是一种特定内存。
生动的描述请以楼上两位为准。