1、初識(shí)size_t
這里可能大部分都不太知道有size_t這樣的一個(gè)數(shù)據(jù)類(lèi)型,可以說(shuō)該類(lèi)型是英文size type的一個(gè)縮寫(xiě),它是一種記錄數(shù)據(jù)大小的數(shù)據(jù)類(lèi)型(可以認(rèn)為是一種整形數(shù)據(jù))。其實(shí)我們經(jīng)常使用的sizeof()的返回值數(shù)據(jù)類(lèi)型就是size_t,只是我們常常用一個(gè)整形比如int來(lái)保存返回值。
值得我們注意得是:
sizeof類(lèi)型是一個(gè)與操作系統(tǒng)相關(guān)得數(shù)據(jù)類(lèi)型,它主要是為了提高C語(yǔ)言的可移植性和可讀性而加入的,可以說(shuō)它并不是一種基本的數(shù)據(jù)類(lèi)型,而且在頭文件中用typedef來(lái)重命名的數(shù)據(jù)類(lèi)型。其實(shí)在我們平時(shí)很多地方都用到了size_t,比如:

我們使用的時(shí)候幾乎都用整形比如int變量來(lái)使用,并沒(méi)有使用到size_t類(lèi)型,所以說(shuō)盡管我們的int依賴(lài)于C編譯器,有些情況size_t并不是固定的,如果我們用基本類(lèi)型替換可能帶來(lái)數(shù)據(jù)類(lèi)型過(guò)小或者過(guò)大的問(wèn)題,過(guò)小可能會(huì)導(dǎo)致數(shù)據(jù)溢出問(wèn)題,過(guò)大可能導(dǎo)致運(yùn)行速度降低!
size_t的使用:只要是用到sizeof等返回值,或者傳入值的變量都定義為size_t類(lèi)型!
2、什么是隊(duì)列?
隊(duì)列—
一種特殊的操作受限制得線(xiàn)性表,用戶(hù)僅允許在線(xiàn)性表的頭部獲取數(shù)據(jù),在尾部插入數(shù)據(jù),所以大家也叫FIFO(先進(jìn)先出)線(xiàn)性表。
形象一點(diǎn)的表達(dá)
:類(lèi)似于一隊(duì)人排隊(duì)鉆進(jìn)一根只能進(jìn)入一個(gè)人的管子,先進(jìn)去的人先出來(lái),后面的人只能在從同一個(gè)口子進(jìn)入!
隊(duì)列的類(lèi)型:
順序隊(duì)列和循環(huán)隊(duì)列。順序隊(duì)列,出隊(duì)列指針必須>或者=入隊(duì)列指針,否則容易出現(xiàn)假溢出現(xiàn)象;而循環(huán)隊(duì)列只要入隊(duì)列指針與出隊(duì)列指針不再次重合就不回溢出!
3、不受類(lèi)型限制的隊(duì)列實(shí)現(xiàn)
首先我們先貼上剛剛寫(xiě)好的Queue.h和Queue.c文件






解析代碼:
1)節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)中采用void類(lèi)型的指針,能夠指向任意數(shù)據(jù)類(lèi)型來(lái)擴(kuò)展我們的隊(duì)列。
2)隊(duì)列數(shù)組順序隊(duì)列,我們可以通過(guò)修改擴(kuò)展變成循環(huán)隊(duì)列,便于我們使用。
3)具體的使用可以參考上面的例子進(jìn)行開(kāi)發(fā)。
4、隊(duì)列的應(yīng)用
1)隊(duì)列可以作為一種數(shù)據(jù)緩沖,當(dāng)我們的數(shù)據(jù)無(wú)法實(shí)時(shí)進(jìn)行發(fā)送的時(shí)候,可以進(jìn)行適當(dāng)?shù)年?duì)列緩沖,集中到一定的數(shù)據(jù),然后進(jìn)行打包發(fā)送。
2)隊(duì)列可以實(shí)現(xiàn)任務(wù)之間的一個(gè)信息交互,可以解決一些多線(xiàn)程問(wèn)題,實(shí)現(xiàn)一種任務(wù)之間的異步處理。
3)由于是隊(duì)列的一個(gè)先進(jìn)先出特點(diǎn),我們也可以利用隊(duì)列來(lái)嚴(yán)格的控制數(shù)據(jù)的順序。
審核編輯:劉清
-
接口
+關(guān)注
關(guān)注
33文章
9521瀏覽量
157050 -
C語(yǔ)言
+關(guān)注
關(guān)注
183文章
7644瀏覽量
145614 -
多線(xiàn)程
+關(guān)注
關(guān)注
0文章
279瀏覽量
21033
發(fā)布評(píng)論請(qǐng)先 登錄
RDMA設(shè)計(jì)43:隊(duì)列刪除及連接斷開(kāi)功能測(cè)試
RDMA設(shè)計(jì)40:隊(duì)列管理及連接建立功能驗(yàn)證與分析
RDMA設(shè)計(jì)25:隊(duì)列管理模塊之發(fā)送模塊詳細(xì)設(shè)計(jì)分析
RDMA設(shè)計(jì)26:隊(duì)列管理模塊設(shè)計(jì)之接收隊(duì)列模塊詳細(xì)分析
RDMA設(shè)計(jì)24:隊(duì)列管理模塊設(shè)計(jì)
RDMA設(shè)計(jì)18:隊(duì)列管理模塊設(shè)計(jì)3
RDMA設(shè)計(jì)17:隊(duì)列管理模塊設(shè)計(jì)2
C語(yǔ)言的循環(huán)隊(duì)列
優(yōu)先級(jí)隊(duì)列介紹
基于環(huán)形隊(duì)列的UART收發(fā)回顯實(shí)驗(yàn)
NVMe IP高速傳輸卻不依賴(lài)XDMA設(shè)計(jì)之九:隊(duì)列管理模塊(上)
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計(jì)九:隊(duì)列管理模塊設(shè)計(jì)(上)
RabbitMQ消息隊(duì)列解決方案
NVME控制器之隊(duì)列管理模塊
NVME控制器之隊(duì)列管理模塊
什么是隊(duì)列?不受類(lèi)型限制的隊(duì)列如何實(shí)現(xiàn)
評(píng)論