C 言語の size_t

Ammar Ali 2023年10月12日
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つの符号なし値の差が計算されるため、結果は正になります。

この場合、intfloat などの別のデータ型を使用する必要があります。size_t データ型の実装が 64 ビットの場合、64 ビット幅になります。実装が 32 ビットの場合、32 ビット幅になります。

著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook