size_t

size_t

size_t 類型定義在cstddef頭檔案中,該檔案是C標準庫的頭檔案stddef.h的C++版。它是一個與機器相關的unsigned類型,其大小足以保證存儲記憶體中對象的大小。

例如:bitset的size操作返回bitset對象中二進制位中1的個數,返回值類型是size_t。

例如:在用下標訪問元素時,vector使用vector::size_type作為下標類型,而數組下標的正確類型則是size_t。vector使用的下標實際也是size_t,源碼是typedef size_t size_type。

基本介紹

  • 中文名:size_t
  • 外文名:unsigned int
  • 定義:在cstddef頭檔案中
  • 64位系統中:long unsigned int
來源,使用,實現方式,詳細解釋,示例代碼,

來源

size_t是標準C庫中定義的,應為unsigned int,在64位系統中為 long unsigned int。
數據類型"socklen_t"和int應該具有相同的長度,否則就會破壞 BSD套接字層的填充。POSIX開始的時候用的是size_t, Linus Torvalds(他希望有更多的人,但顯然不是很多) 努力向他們解釋使用size_t是完全錯誤的,因為在64位結構中 size_t和int的長度是不一樣的,而這個參數的長度必須和int一致,因為這是BSD套接字接口標準。最終POSIX的那幫傢伙找到了解決的辦法,那就是創造了一個新的類型"socklen_t"。Linus Torvalds說這是由於他們發現了自己的錯誤但又不好意思向大傢伙兒承認,所以另外創造了一個新的數據類型 。

使用

一個基本的無符號整數的C / C + +類型, 它是sizeof操作符返回的結果類型, 該類型的大小可選擇。因此,它可以存儲在理論上是可能的任何類型的數組的最大大小。 換句話說,一個指針可以被安全地放進為size_t類型(一個例外是類的函式指針,但是這是一個特殊的情況下)。 size_t類型通常用於循環、數組索引、大小的存儲和地址運算。 雖然size_t可以存儲一個指針,它的目的是更好地使用另一個unsinged整數類型uintptr_t形式。 在某些情況下,使用size_t類型是更為有效,比習慣性使用無符號類型的程式會更安全。
size_t是在基於無符號整數memsize類型的C / C + +的標準庫中定義的。 C語言中,此類型位於頭檔案stddef.h中,而在C++中,則位於cstddef中。

實現方式

在C++中,設計 size_t 就是為了適應多個平台的 。size_t的引入增強了程式在不同平台上的可移植性。size_t是針對系統定製的一種數據類型,一般是整型,因為C/C++標準只定義一最低的位數,而不是必需的固定位數。而且在記憶體里,對數的高位對齊存儲還是低位對齊存儲各系統都不一樣。為了提高代碼的可移植性,就有必要定義這樣的數據類型。一般這種類型都會定義到它具體占幾位記憶體等。當然,有些是編譯器或系統已經給定義好的。經測試發現,在32位系統中size_t是4位元組的,而在64位系統中,size_t是8位元組的,這樣利用該類型可以增強程式的可移植性。

詳細解釋

size_t在C語言中就有了。
它是一種“整型”類型,裡面保存的是一個整數,就像int, long那樣。這種整數用來記錄一個大小(size)。size_t的全稱應該是size type,就是說“一種用來記錄大小的數據類型”。

相關詞條

熱門詞條

聯絡我們