1、初識(shí)size_t
這里可能大部分都不太知道有size_t這樣的一個(gè)數(shù)據(jù)類型,可以說該類型是英文size type的一個(gè)縮寫,它是一種記錄數(shù)據(jù)大小的數(shù)據(jù)類型(可以認(rèn)為是一種整形數(shù)據(jù))。其實(shí)我們經(jīng)常使用的sizeof()的返回值數(shù)據(jù)類型就是size_t,只是我們常常用一個(gè)整形比如int來保存返回值。
值得我們注意得是:
sizeof類型是一個(gè)與操作系統(tǒng)相關(guān)得數(shù)據(jù)類型,它主要是為了提高C語言的可移植性和可讀性而加入的,可以說它并不是一種基本的數(shù)據(jù)類型,而且在頭文件中用typedef來重命名的數(shù)據(jù)類型。其實(shí)在我們平時(shí)很多地方都用到了size_t,比如:
我們使用的時(shí)候幾乎都用整形比如int變量來使用,并沒有使用到size_t類型,所以說盡管我們的int依賴于C編譯器,有些情況size_t并不是固定的,如果我們用基本類型替換可能帶來數(shù)據(jù)類型過小或者過大的問題,過小可能會(huì)導(dǎo)致數(shù)據(jù)溢出問題,過大可能導(dǎo)致運(yùn)行速度降低!
size_t的使用:只要是用到sizeof等返回值,或者傳入值的變量都定義為size_t類型!
2、什么是隊(duì)列?
隊(duì)列—
一種特殊的操作受限制得線性表,用戶僅允許在線性表的頭部獲取數(shù)據(jù),在尾部插入數(shù)據(jù),所以大家也叫FIFO(先進(jìn)先出)線性表。
形象一點(diǎn)的表達(dá)
:類似于一隊(duì)人排隊(duì)鉆進(jìn)一根只能進(jìn)入一個(gè)人的管子,先進(jìn)去的人先出來,后面的人只能在從同一個(gè)口子進(jìn)入!
隊(duì)列的類型:
順序隊(duì)列和循環(huán)隊(duì)列。順序隊(duì)列,出隊(duì)列指針必須>或者=入隊(duì)列指針,否則容易出現(xiàn)假溢出現(xiàn)象;而循環(huán)隊(duì)列只要入隊(duì)列指針與出隊(duì)列指針不再次重合就不回溢出!
3、不受類型限制的隊(duì)列實(shí)現(xiàn)
首先我們先貼上剛剛寫好的Queue.h和Queue.c文件
解析代碼:
1)節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)中采用void類型的指針,能夠指向任意數(shù)據(jù)類型來擴(kuò)展我們的隊(duì)列。
2)隊(duì)列數(shù)組順序隊(duì)列,我們可以通過修改擴(kuò)展變成循環(huán)隊(duì)列,便于我們使用。
3)具體的使用可以參考上面的例子進(jìn)行開發(fā)。
4、隊(duì)列的應(yīng)用
1)隊(duì)列可以作為一種數(shù)據(jù)緩沖,當(dāng)我們的數(shù)據(jù)無法實(shí)時(shí)進(jìn)行發(fā)送的時(shí)候,可以進(jìn)行適當(dāng)?shù)年?duì)列緩沖,集中到一定的數(shù)據(jù),然后進(jìn)行打包發(fā)送。
2)隊(duì)列可以實(shí)現(xiàn)任務(wù)之間的一個(gè)信息交互,可以解決一些多線程問題,實(shí)現(xiàn)一種任務(wù)之間的異步處理。
3)由于是隊(duì)列的一個(gè)先進(jìn)先出特點(diǎn),我們也可以利用隊(duì)列來嚴(yán)格的控制數(shù)據(jù)的順序。
審核編輯:劉清
-
接口
+關(guān)注
關(guān)注
33文章
8667瀏覽量
151518 -
C語言
+關(guān)注
關(guān)注
180文章
7613瀏覽量
137240 -
多線程
+關(guān)注
關(guān)注
0文章
278瀏覽量
20032
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論