C语言中堆栈的“那些事儿”

本篇文章主要是讲在我们C语言中,重要的知识:堆栈。人生,就是一场自己与自己的较量(哈哈哈),为了开发更快捷、更方便,那么今天开始我们走就进C语言的重点知识点。(如果想看单片机堆栈方面的请点击:单片机中堆栈那些事儿,其实知识都是一样),这里就抽象变具体的说一下:

首先明确的是堆与栈是两种数据结构。下面就将抽象的概念变成我们所知道的东西:

栈(就像装数据的桶或箱子,就像子弹夹):是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。这就如同要取出放在箱子里面底下的东西(放入的比较早的物体),首先要移开压在它上面的物体(放入的比较晚的物体)。

堆(就像一棵倒过来的树):是一种经过排序树形数据结构每个树的结点都有一个值通常所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。由于堆的这个特性,常用来实现优先队列堆的存取是随意,这就如同在图书馆的书架上取书,虽然书的摆放是有顺序的,但是想取任意一本时不必像栈一样,先取出前面所有的书,书架这种机制不同于箱子我们可以直接取出我们想要的书。

C语言程序内存分配中的堆和栈,一般情况下程序存放在Rom或Flash中。C语言程序经过编译连接后形成编译、连接后形成的二进制映像文件由栈,堆,数据段和代码段组成。

其中栈区:处于相对较高的地址以地址的增长方向为上的话,栈地址是向下增长的,由系统自动分配。

堆区:是向上增长的用于分配程序员申请的内存空间,需程序员自己申请。

好了,不早了,就整理到这了,希望在大家心里对于堆栈都有一个具体的理解吧,如果不懂的话,那就再看一遍(哈哈哈!)

 

©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页