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 データ型がこれら 2つのヘッダーファイルに依存しているためです。
たとえば、配列を定義し、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() 関数を使用して、指定された配列のサイズを出力しました。
sizeof() 関数の出力は size_t 型の長い符号なし整数であるため、printf() 関数内で%lu 文字列を使用しました。
printf() 関数内の\n 文字列を使用して、size 変数の値が出力された後に新しい行を追加しました。そうしないと、カーソルが新しい行に移動します。
size_t データ型を使用してオブジェクトのサイズを格納できます。負の値も格納できる他の値を格納する場合は、int などの別のデータ型を使用する必要があります。
2つの size_t データ型の値の違いを見つけたい場合、正確な結果を見つけることができない場合があります。最初の値が 2 番目の値よりも小さい場合、結果は負になりますが、この場合、2つの符号なし値の差が計算されるため、結果は正になります。
この場合、int や float などの別のデータ型を使用する必要があります。size_t データ型の実装が 64 ビットの場合、64 ビット幅になります。実装が 32 ビットの場合、32 ビット幅になります。
