1、sizeof返回的必定是無符號整形,在標準c中通過 typedef 將返回值型別定義為size_t.
若用printf輸出size_t型別時,c99中定義格式符%zd;若編譯器不支援可以嘗試%u或%lu.
sizeof,獲取運算元占用的記憶體空間位元組數,返回型別size_t;
strlen,獲取字元陣列實際使用的位元組數,不包含陣列結尾符』\0』,返回型別size_t。
2、它是一種「整型」型別,裡面儲存的是乙個整數,就像int, long那樣。這種整數用來記錄乙個大小(size)。size_t 的全稱應該是size type,就是說「一種用來記錄大小的資料型別」。通常我們用sizeof(***)操作,這個操作所得到的結果就是size_t型別。因為size_t型別的資料其實是儲存了乙個整數,所以它也可以做加減乘除,也可以轉化為int並賦值給int型別的變數。
類似的還有wchar_t、 ptrdiff_t。
wchar_t就是wide char type,「一種用來記錄乙個寬字元的資料型別」。
ptrdiff_t就是pointer difference type,「一種用來記錄兩個指標之間的距離的資料型別」。
**舉例:
int i; // 定義乙個int型別的變數i
size_t size = sizeof(i);
// 用sizeof操作得到變數i的大小,這是乙個size_t型別的值
// 可以用來對乙個size_t型別的變數做初始化
i = (int)size; // size_t型別的值可以轉化為int型別的值
char c = 'a'; // c儲存了字元a,佔乙個位元組
wchar_t wc = l'a';
// wc儲存了寬字元a,佔兩個位元組。注意'a'表示字元a,l'a'表示寬字元a
int arr = ; // 定義乙個陣列
int* p1 = &arr[0]; // 取得陣列中元素的位址,賦值給指標
int* p2 = &arr[3];
ptrdiff_t diff = p2 - p1;
//指標的減法可以計算兩個指標之間相隔的元素個數,所得結果是乙個ptrdiff_t型別
i = (int)diff; // ptrdiff_t型別的值可以轉化為int型別的值
3、size_t是全域性定義的型別;size_type是stl類中定義的型別屬性,用以儲存任意string和vector類物件的長度
4、string::size_type 制型別一般就是unsigned int, 但是不同機器環境長度可能不同 win32 和win64上長度差別;size_type一般也是unsigned int
5、使用的時候可以參考:
string::size_type a =123;
vectorsize_type b=234;
size_t b=456;
6、 size_t 使用的時候標頭檔案需要 ;size_type 使用的時候需要或者
7、 sizeof(string::size_type)
sizeof(vector::size_type)
sizeof(vector::size_type)
sizeof(size_t)
上述長度均相等,長度為win32:4,win64:8
8、二者聯絡:在用下標訪問元素時,vector使用vector::size_type作為下標型別,而陣列下標的正確型別則是size_t
9、在編譯的過程中size_t型別的a值會被編譯他的補碼。所以在使用size_t型別資料的過程中尤其要注意,特別是在邏輯表示式中使用到該型別,稍不注意可能帶來很嚴重的後果。
注:正數的補碼:與原碼相同;負數的補碼:符號位為1,其餘位為該數絕對值的原碼按位取反,然後整個數加1。
10、不同平台的size_t會用不同的型別實現,使用size_t而非int或unsigned可以寫出擴充套件行更好的**,即是為了提供一種可移植的**形式。
參考資料:
為什麼size_t重要?(why size_t matters)
size_t
【c++】size_t 和 size_type的區別
size_t的秘密
size t用法總結
size t在c語言中就有了。它是一種 整型 型別,裡面儲存的是乙個整數,就像int,long那樣。這種整數用來記錄乙個大小 size size t的全稱應該是size type,就是說 一種用來記錄大小的資料型別 通常我們用sizeof 操作,這個操作所得到的結果就是size t型別。因為size...
size t型別的含義
size t乙個基本的無符號整數的c c 型別,它的全稱是size type,就是一種用來記錄大小的資料型別,也是sizeof操作符返回的結果型別。size t是在基於無符號整數memsize型別的c c 的標準庫中定義的。c語言中,此型別位於標頭檔案stddef.h中,而在c 中,則位於cstdd...
size t 資料型別
size t是一些c c 標準在stddef.h中定義的,size t 型別表示c中任何物件所能達到的最大長度,它是無符號整數。它是為了方便系統之間的移植而定義的,不同的系統上,定義size t 可能不一樣。size t在32位系統上定義為 unsigned int,也就是32位無符號整型。在64位...