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。

(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)
从结构体类型起始处到指定成员的字节偏移量
(函数宏)