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

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

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

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

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

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

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

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

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科技眼

共同努力!共同进步!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值