size_t在c語言中就有了。它是一種「整型」型別,裡面儲存的是乙個整數,就像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型別的值
通常,size_t和ptrdiff_t都是用typedef來實現的。你可能在某個標頭檔案裡面找到類似的語句:
typedef unsigned int size_t;
typedef int ptrdiff_t;
而wchar_t則稍有不同。在一些舊的編譯器中,wchar_t也可能是用typedef來實現,但是新的標準中wchar_t已經是c/c++語言的關鍵字,wchar_t型別的地位已經和char, int的地位等同了。
size_t就是unsigned int或者unsigned long
ptrdiff_t就是int或者long
編譯器版本不同,可能int可能long
都是巨集定義
#include 或者#include ,就在他們裡面
在stl裡面size_t又被定義成size_type,ptrdiff_t又被定義成difference_type,兩者都是被typedef定義成的
C C 中size t潛在的問題
在c 中,利用陣列下標訪問陣列元素時,常常將下標型別定義為size t型別,因為正常來說,陣列的下標就是size t型別。例如這樣 for size t i 0 i container.size i 然而具體來說,size t是乙個和機器相關的unsigned型別。重點就在於.size t是乙個un...
size t用法總結
size t在c語言中就有了。它是一種 整型 型別,裡面儲存的是乙個整數,就像int,long那樣。這種整數用來記錄乙個大小 size size t的全稱應該是size type,就是說 一種用來記錄大小的資料型別 通常我們用sizeof 操作,這個操作所得到的結果就是size t型別。因為size...
C C 中的 用法
用來連線前後兩個引數,把它們變成乙個字串。核心中有很多的巨集定義,在巨集定義 define 中經常看到兩個字串 和 這裡把它的用法做一下說明 是乙個連線符號,用於把引數連在一起,例如 define foo arg my arg 則foo abc 相當於myabc define css delete ...