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文章
8626瀏覽量
151351 -
C語言
+關注
關注
180文章
7606瀏覽量
137071 -
多線程
+關注
關注
0文章
278瀏覽量
20016
發布評論請先 登錄
相關推薦
評論