命名空间
变体
操作

size_t

来自 cppreference.cn
< c‎ | 类型
定义于头文件 <stddef.h>
定义于头文件 <stdio.h>
定义于头文件 <stdlib.h>
定义于头文件 <string.h>
定义于头文件 <time.h>
定义于头文件 <uchar.h>
(since C11)
定义于头文件 <wchar.h>
(since C95)
typedef /*implementation-defined*/ size_t;

size_tsizeofoffsetof_Alignof(until C23)alignof(since C23) 结果的无符号整数类型,取决于数据模型

size_t 的位宽不小于 16。

(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