size_t
|
ヘッダーで定義
<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以降)
の結果の符号なし整数型であり、
データモデル
に依存します。
|
|
(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) |
|
|
構造体型の先頭から指定されたメンバーまでのバイトオフセット
(関数マクロ) |
|
|
C++ documentation
for
size_t
|
|