天天看點

size_t wchar_t

size_t在c語言中就有了。它是一種“整型”類型,裡面儲存的是一個整數,就像int, long那樣。這種整數用來記錄一個大小(size)。size_t的全稱應該是size type,就是說“一種用來記錄大小的資料類型”。通常我們用sizeof(xxx)操作,這個操作所得到的結果就是size_t類型。因為size_t類型的資料其實是儲存了一個整數,是以它也可以做加減乘除,也可以轉化為int并指派給int類型的變量。類似的還有wchar_t,

ptrdiff_t。wchar_t就是wide char type,“一種用來記錄一個寬字元的資料類型”。ptrdiff_t就是pointer difference type,“一種用來記錄兩個指針之間的距離的資料類型”。示例代碼:int i; // 定義一個int類型的變量isize_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'表示寬字元aint arr[] = {1, 2, 3, 4, 5}; // 定義一個數組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的地位等同了

繼續閱讀