C C 中size t 的用法

2021-06-29 08:02:06 字數 1442 閱讀 5812

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 ...