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 ビット幅になります。