1、初识size_t
这里可能大部分都不太知道有size_t这样的一个数据类型,可以说该类型是英文size type的一个缩写,它是一种记录数据大小的数据类型(可以认为是一种整形数据)。其实我们经常使用的sizeof()的返回值数据类型就是size_t,只是我们常常用一个整形比如int来保存返回值。
值得我们注意得是:
sizeof类型是一个与操作系统相关得数据类型,它主要是为了提高C语言的可移植性和可读性而加入的,可以说它并不是一种基本的数据类型,而且在头文件中用typedef来重命名的数据类型。其实在我们平时很多地方都用到了size_t,比如:
我们使用的时候几乎都用整形比如int变量来使用,并没有使用到size_t类型,所以说尽管我们的int依赖于C编译器,有些情况size_t并不是固定的,如果我们用基本类型替换可能带来数据类型过小或者过大的问题,过小可能会导致数据溢出问题,过大可能导致运行速度降低!
size_t的使用:只要是用到sizeof等返回值,或者传入值的变量都定义为size_t类型!
2、什么是队列?
队列—
一种特殊的操作受限制得线性表,用户仅允许在线性表的头部获取数据,在尾部插入数据,所以大家也叫FIFO(先进先出)线性表。
形象一点的表达
:类似于一队人排队钻进一根只能进入一个人的管子,先进去的人先出来,后面的人只能在从同一个口子进入!
队列的类型:
顺序队列和循环队列。顺序队列,出队列指针必须>或者=入队列指针,否则容易出现假溢出现象;而循环队列只要入队列指针与出队列指针不再次重合就不回溢出!
3、不受类型限制的队列实现
首先我们先贴上刚刚写好的Queue.h和Queue.c文件
解析代码:
1)节点数据结构中采用void类型的指针,能够指向任意数据类型来扩展我们的队列。
2)队列数组顺序队列,我们可以通过修改扩展变成循环队列,便于我们使用。
3)具体的使用可以参考上面的例子进行开发。
4、队列的应用
1)队列可以作为一种数据缓冲,当我们的数据无法实时进行发送的时候,可以进行适当的队列缓冲,集中到一定的数据,然后进行打包发送。
2)队列可以实现任务之间的一个信息交互,可以解决一些多线程问题,实现一种任务之间的异步处理。
3)由于是队列的一个先进先出特点,我们也可以利用队列来严格的控制数据的顺序。
审核编辑:刘清
-
接口
+关注
关注
33文章
8768浏览量
152330 -
C语言
+关注
关注
180文章
7618浏览量
138519 -
多线程
+关注
关注
0文章
278浏览量
20103
发布评论请先 登录
相关推荐
JavaWeb消息队列使用指南
探索字节队列的魔法:多类型支持、函数重载与线程安全

为什么同一个队列引用的全局变量,运行在两个子vi中发现队列数据丢失了
嵌入式环形队列与消息队列的实现原理
玩转RT-Thread之消息队列的应用

在arduino平台上开发esp32c3,twai队列异常的原因?
freertos启用IAR自带插件调试时不能查看队列信息怎么解决?
嵌入式实时操作系统中的队列管理与应用

Freertos队列项里的字节长度是否可以获取?
freertos队列错乱是什么原因导致的?
用FreeRTOS使用队列怎么发送一个结构体呢?
Linux 6.9-rc1发布,加入定时器、工作队列及AMD P-State优化
MCU专属队列功能模块之QueueForMcu应用

评论