Namespaces
Variants

size_t

From cppreference.net
< c ‎ | types
ヘッダーで定義 <stddef.h>
ヘッダーで定義 <stdio.h>
ヘッダーで定義 <stdlib.h>
ヘッダーで定義 <string.h>
ヘッダーで定義 <time.h>
ヘッダーで定義 <uchar.h>
(C11以降)
ヘッダーで定義 <wchar.h>
(C95以降)
typedef /*implementation-defined*/ size_t ;

size_t は、 sizeof offsetof および _Alignof (C23まで) alignof (C23以降) の結果の符号なし整数型であり、 データモデル に依存します。

size_t のビット幅は16以上である。

(C99以降)

目次

注記

size_t は、理論上可能なあらゆる型(配列を含む)のオブジェクトの最大サイズを格納できます。

size_t は配列のインデックス指定やループカウントによく使用されます。 unsigned int などの他の型を配列インデックスに使用するプログラムは、例えば64ビットシステムでインデックスが UINT_MAX を超える場合、または32ビットのモジュラー演算に依存している場合に失敗する可能性があります。

実装例

typedef typeof ( sizeof ( 0 ) ) size_t ;

(C23以降)

#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
int main(void)
{
    const size_t N = 101;
    int numbers[N];
    size_t sum = 0;
    for (size_t ndx = 0; ndx < N; ++ndx)
        sum += numbers[ndx] = ndx;
    size_t size = sizeof numbers;
    printf("sum = %zu\n", sum);
    printf("size = %zu\n", size);
    printf("SIZE_MAX = %zu\n", SIZE_MAX);
}

出力例:

sum = 5050
size = 404
SIZE_MAX = 18446744073709551615

参考文献

  • C23規格 (ISO/IEC 9899:2024):
  • 7.19 共通定義 <stddef.h> (p: TBD)
  • 7.20.3 その他の整数型の制限 (p: TBD)
  • C17規格 (ISO/IEC 9899:2018):
  • 7.19 共通定義 <stddef.h> (p: 211)
  • 7.20.3 その他の整数型の限界 (p: 215)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.19 共通定義 <stddef.h> (p: 288)
  • 7.20.3 その他の整数型の制限 (p: 293)
  • C99規格 (ISO/IEC 9899:1999):
  • 7.17 共通定義 <stddef.h> (p: 253)
  • 7.18.3 その他の整数型の限界 (p: 258)
  • C89/C90標準 (ISO/IEC 9899:1990):
  • 4.1.6 共通定義 <stddef.h>

関連項目

2つのポインタを減算したときに返される符号付き整数型
(typedef)
構造体型の先頭から指定されたメンバーまでのバイトオフセット
(関数マクロ)