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,「一種用來記錄兩個指標之間的距離的資料型別」。
通常,size_t和ptrdiff_t都是用typedef來實現的。你可能在某個標頭檔案裡面找到類似的語句:
typedef unsigned int size_t;
而wchar_t則稍有不同。在一些舊的編譯器中,wchar_t也可能是用typedef來實現,但是新的標準中wchar_t已經是c/c++語言的關鍵字,wchar_t型別的地位已經和char, int的地位等同了。
在標準c/c++的語法中,只有int float char bool等基本的資料型別,至於size_t,或size_type都是以後的程式設計人員為了方便記憶所定義的一些便於理解的由基本資料型別的變體型別。
例如:typedef int size_t;定義了size_t為整型。
示例程式:
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型別總結
1 sizeof返回的必定是無符號整形,在標準c中通過 typedef 將返回值型別定義為size t.若用printf輸出size t型別時,c99中定義格式符 zd 若編譯器不支援可以嘗試 u或 lu.sizeof,獲取運算元占用的記憶體空間位元組數,返回型別size t strlen,獲取字元...
C C 中size t 的用法
size t在c語言中就有了。它是一種 整型 型別,裡面儲存的是乙個整數,就像int,long那樣。這種整數用來記錄乙個大小 size size t的全稱應該是size type,就是說 一種用來記錄大小的資料型別 通常我們用sizeof 操作,這個操作所得到的結果就是size t型別。因為size...
size t到底多大
c語言中 size t一般用來表示一種計數,比如有多少東西被拷貝等。sizeof操作符的結果型別是size t,陣列大小也是size t型別。它在標頭檔案中typedef為unsigned int型別,即typedef unsigned int size t 該型別保證能容納實現所建立的最大物件的位...