分清堆和栈
其实关于堆栈的问题在脑海中盘旋了挺久的了。从C语言开始,到数据结构,再到现在的Java,它一直在!现在就让我们从头开始吧。 明确概念 首先应该明确堆和栈是不同的东西,其次数据结构中的堆和栈与编程语言中的堆和栈不是同一个概念。 从数据结构说起 栈:即Stack,是一个LIFO队列。对它的操作有pop(),push(),peek()等。 堆:即Heap,是一棵完全二叉树(heap的某一种),它的特点是父节点的值大于(小于)两个子节点的值(分别称为大顶堆和小顶堆)。 具体内容可以参考后续关于数据结构的系列博客。 再到C语言 int a = 0; //全局初始化区 char *p1; //全局未初始化区 main() { int b; //栈 char s[] = "abc"; //栈 char *p2; //栈 char *p3 = "