size_t
来自 cppreference.cn
定义于头文件 <stddef.h> |
||
定义于头文件 <stdio.h> |
||
定义于头文件 <stdlib.h> |
||
定义于头文件 <string.h> |
||
定义于头文件 <time.h> |
||
定义于头文件 <uchar.h> |
(since C11) |
|
定义于头文件 <wchar.h> |
(since C95) |
|
typedef /*implementation-defined*/ size_t; |
||
size_t
是 sizeof、offsetof 和 _Alignof(until C23)alignof(since C23) 结果的无符号整数类型,取决于数据模型。
|
(since C99) |
目录 |
[编辑] 注释
size_t
可以存储任何类型(包括数组)的理论上可能的最大对象大小。
size_t
通常用于数组索引和循环计数。对于数组索引使用其他类型(例如 unsigned int)的程序,在例如 64 位系统上,当索引超过 UINT_MAX 或者如果它依赖于 32 位模运算时,可能会失败。
[编辑] 可能的实现
typedef typeof(sizeof(0)) size_t; // valid since 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>
[编辑] 参见
减去两个指针时返回的有符号整数类型 (typedef) | |
从结构体类型开头到指定成员的字节偏移量 (function macro) | |
C++ 文档 for size_t
|