android size_t在哪个头文件,size_t
size_t 類型定義在cstddef頭文件中,該文件是C標準庫的頭文件stddef.h的C++版。它是一個與機器相關(guān)的unsigned類型,其大小足以保證存儲內(nèi)存中對象的大小。
例如:bitset的size操作返回bitset對象中二進制位中1的個數(shù),返回值類型是size_t。
例如:在用下標訪問元素時,vector使用vector::size_type作為下標類型,而數(shù)組下標的正確類型則是size_t。vector使用的下標實際也是size_t,源碼是typedef size_t size_type。
中文名
size_t
外文名
unsigned int定????義
在cstddef頭文件中
64位系統(tǒng)中
long long unsigned int
size_t來源
編輯
size_t是標準C庫中定義的,在64位系統(tǒng)中為long long unsigned int,非64位系統(tǒng)中為long unsigned int。
數(shù)據(jù)類型"socklen_t"和int應(yīng)該具有相同的長度,否則就會破壞BSD套接字層的填充。POSIX開始的時候用的是size_t,Linus Torvalds(他希望有更多的人,但顯然不是很多)努力向他們解釋使用size_t是完全錯誤的,因為在64位結(jié)構(gòu)中 size_t和int的長度是不一樣的,而這個參數(shù)的長度必須和int一致,因為這是BSD套接字接口標準。最終POSIX的那幫家伙找到了解決的辦法,那就是創(chuàng)造了一個新的類型"socklen_t"。Linus Torvalds說這是由于他們發(fā)現(xiàn)了自己的錯誤但又不好意思向大家伙兒承認,所以另外創(chuàng)造了一個新的數(shù)據(jù)類型 。
size_t使用
編輯
一個基本的無符號整數(shù)的C / C + +類型,它是sizeof操作符返回的結(jié)果類型,該類型的大小可選擇。因此,它可以存儲在理論上是可能的任何類型的數(shù)組的最大大小。換句話說,一個指針可以被安全地放進為size_t類型(一個例外是類的函數(shù)指針,但是這是一個特殊的情況下)。 size_t類型通常用于循環(huán)、數(shù)組索引、大小的存儲和地址運算。雖然size_t可以存儲一個指針,它的目的是更好地使用另一個unsigned整數(shù)類型uintptr_t。在某些情況下,使用size_t類型是更為有效,比習(xí)慣性使用無符號類型的程序會更安全。
size_t是在基于無符號整數(shù)memsize類型的C / C + +的標準庫中定義的。C語言中,此類型位于頭文件stddef.h中,而在C++中,則位于cstddef中。
size_t實現(xiàn)方式
編輯
在C++中,設(shè)計size_t 就是為了適應(yīng)多個平臺的。size_t的引入增強了程序在不同平臺上的可移植性。size_t是針對系統(tǒng)定制的一種數(shù)據(jù)類型,一般是整型,因為C/C++標準只定義一最低的位數(shù),而不是必需的固定位數(shù)。而且在內(nèi)存里,對數(shù)的高位對齊存儲還是低位對齊存儲各系統(tǒng)都不一樣。為了提高代碼的可移植性,就有必要定義這樣的數(shù)據(jù)類型。一般這種類型都會定義到它具體占幾位內(nèi)存等。當然,有些是編譯器或系統(tǒng)已經(jīng)給定義好的。經(jīng)測試發(fā)現(xiàn),在32位系統(tǒng)中size_t是4字節(jié)的,而在64位系統(tǒng)中,size_t是8字節(jié)的,這樣利用該類型可以增強程序的可移植性。
size_t詳細解釋
編輯
size_t在C語言中就有了。
它是一種“整型”類型,里面保存的是一個整數(shù),就像int、long那樣。這種整數(shù)用來記錄一個大小(size)。size_t的全稱應(yīng)該是size type,就是說“一種用來記錄大小的數(shù)據(jù)類型”。
通常我們用sizeof(XXX)操作,這個操作所得到的結(jié)果就是size_t類型。
因為size_t類型的數(shù)據(jù)其實是保存了一個整數(shù),所以它也可以做加減乘除,也可以轉(zhuǎn)化為int并賦值給int類型的變量。
類似的還有wchar_t, ptrdiff_t。
wchar_t就是wide char type,“一種用來記錄一個寬字符的數(shù)據(jù)類型”。
ptrdiff_t就是pointer difference type,“一種用來記錄兩個指針之間的距離的數(shù)據(jù)類型”。
通常,size_t和ptrdiff_t都是用typedef來實現(xiàn)的。你可能在某個頭文件里面找到類似的語句:
typedef unsigned int size_t;
而wchar_t則稍有不同。在一些舊的編譯器中,wchar_t也可能是用typedef來實現(xiàn),但是新的標準中wchar_t已經(jīng)是C/C++語言的關(guān)鍵字,wchar_t類型的地位已經(jīng)和char, int的地位等同了。
在標準C/C++的語法中,只有int float char bool等基本的數(shù)據(jù)類型,至于size_t或size_type都是以后的編程人員為了方便記憶所定義的一些便于理解的由基本數(shù)據(jù)類型的變體類型。
例如:typedef int size_t;定義了size_t為整型。
size_t示例代碼
編輯
int?i;//定義一個int類型的變量i
size_t?size?=?sizeof(i);//用sizeof操作得到變量i的類型的大小
//這是一個size_t類型的值
//可以用來對一個size_t類型的變量做初始化
i?=?(int)size;//size_t類型的值可以轉(zhuǎn)化為int類型的值
char?c?=?'a';//c保存了字符a,占一個字節(jié)
wchar_t?wc?=?L'a';//wc保存了寬字符a,占兩個字節(jié)
//注意'a'表示字符a,L'a'表示寬字符a
int?arr[]?=?{1,2,3,4,5};//定義一個數(shù)組
int?*p1?=?&arr[0];//取得數(shù)組中元素的地址,賦值給指針
int?*p2?=?&arr[3];
ptrdiff_t?diff?=?p2-p1;//指針的減法可以計算兩個指針之間相隔的元素個數(shù)
//所得結(jié)果是一個ptrdiff_t類型
i?=?(int)diff;//ptrdiff_t類型的值可以轉(zhuǎn)化為int類型的值
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的android size_t在哪个头文件,size_t的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国内第一家ddos平台(国内第一家ddo
- 下一篇: html语义化有哪些优点,语义化的HTM