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 起)
运算结果的无符号整数类型。
|
|
(since C99) |
目录 |
注释
size_t
可以存储理论上任何类型(包括数组)对象的最大可能尺寸。
size_t
通常用于数组索引和循环计数。若程序使用其他类型(如
unsigned
int
)进行数组索引,则可能在索引值超过
UINT_MAX
或依赖32位模运算时出现故障,例如在64位系统上。
可能的实现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> (页: TBD)
-
- 7.20.3 其他整数类型的限制 (页: TBD)
- C17 标准 (ISO/IEC 9899:2018):
-
- 7.19 通用定义 <stddef.h> (页码: 211)
-
- 7.20.3 其他整数类型的限制 (页码: 215)
- C11 标准 (ISO/IEC 9899:2011):
-
- 7.19 通用定义 <stddef.h> (页码: 288)
-
- 7.20.3 其他整数类型的限制 (页码: 293)
- C99标准(ISO/IEC 9899:1999):
-
- 7.17 通用定义 <stddef.h> (页: 253)
-
- 7.18.3 其他整数类型的限制 (页: 258)
- C89/C90 标准 (ISO/IEC 9899:1990):
-
- 4.1.6 通用定义 <stddef.h>
参见
|
两个指针相减时返回的有符号整数类型
(typedef) |
|
|
从结构体类型起始处到指定成员的字节偏移量
(函数宏) |
|
|
C++ documentation
for
size_t
|
|