C 語言中的 size_t
本教程將討論使用 size_t
命令在 C 語言中定義無符號資料型別變數。
C 語言中的 size_t
size_t
命令在 C 語言中定義了一個無符號資料型別變數。無符號資料型別不能為負數,因此 size_t
命令是一種類似於 int
的資料型別,用於正整數值的情況。
例如,如果我們想計算某個東西或求一個陣列的長度,我們可以使用 size_t
命令定義一個變數,該變數將儲存一個正值,因為陣列的計數和長度都是從 0 開始的,並且它不能為負。
sizeof()
函式以位元組為單位返回數字的大小,我們可以使用 size_t
命令儲存 sizeof()
函式返回的值。
size_t
資料型別使用至少 16 位記憶體來儲存一個值。
許多函式如 strcspn()
和 strlen()
函式的返回型別是資料型別 size_t
。要使用 size_t
資料型別,我們必須包含 stddef.h
和 stdint.h
標頭檔案,因為 size_t
資料型別依賴於這兩個標頭檔案。
例如,讓我們定義一個陣列並使用 sizeof()
函式找到它的大小,並將其儲存在 size_t
資料型別的變數中。請參閱下面的程式碼。
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
int main(void) {
const size_t len = 100;
int My_array[len];
for (size_t i = 0; i < len; ++i) My_array[i] = i;
size_t size = sizeof(My_array);
printf("size of array = %lu\n", size);
}
輸出:
size of array = 400
在上面的程式碼中,len
變數用於儲存陣列的長度,我們使用 for
迴圈來填充陣列 My_array
。我們使用 printf()
函式來列印給定陣列的大小。
我們在 printf()
函式中使用%lu
字串,因為 sizeof()
函式的輸出是一個 size_t
型別的長無符號整數。
我們在 printf()
函式中使用\n
字串在 size
變數的值列印後新增新行,否則游標將移動到新行。
我們可以使用 size_t
資料型別來儲存物件的大小,如果我們想儲存其他一些也可以是負數的值,我們應該使用另一種資料型別,例如 int
。
如果我們想找到兩個 size_t
資料型別值之間的差異,在某些情況下我們無法找到確切的結果;如果第一個值小於第二個值,則結果應該為負,但在這種情況下結果將為正,因為差值是在兩個無符號值之間計算的。
在這種情況下,我們必須使用另一種資料型別,如 int
或 float
。如果 size_t
資料型別實現是 64 位,它將是 64 位寬;如果實現是 32 位,它將是 32 位寬,依此類推。