什么是堆栈,请利用通俗易懂的语言解释

来源:百度知道 编辑:UC知道 时间:2024/05/14 03:34:24

好比有一个箱子,你一本一本放书进去,
最先放进去的书本在最底层,最后的书本在最上层(这叫做压栈)
如果你想拿出来,那么把最上面的书也就是最后放进去的书先拿出来
最先放进去的书最后才能拿出来(这叫做出栈)

什么是堆栈,这可是两个问题哦,
我用C++说一下:
一个程序要运行,系统会给该程序分配一定的空间,其中就包括堆和栈,都是用来存放程序中的变量,同时栈的功能更多,比如说在递归中,虚函数列表中,都有栈的影子
语句1: int a,b;
语句2: char str1[100];
语句3: char* str2 = new char[100];

语句1的两个变量都是存放在栈里
语句2的str1也是存放在栈里
语句3的str2存放在堆里

可以简单的说,不是用 new 申请空间的局部变量都是存放在栈里 ,注意是局部变量,全局变量不是!

通俗的说下堆和栈:

比如说一个慈善家建了一栋楼(栈),没地方睡的人(局部变量)都可以去那里度过一晚上,睡一晚了就走了.
但是在旅馆(堆), 你不能随便就进去睡一晚,要先给钱拿到钥匙(new申请空间),然后睡完了还要把钥匙还回去(释放空间);

就像你吃饭吧.
你一口一口地吃进去(进栈).要吐出来(出栈).就得先把你最后吃进去的吐出来.才能再吐早一点时间吃进去的.