size_t

< c‎ | types
定义于头文件 <stddef.h>
定义于头文件 <stdio.h>
定义于头文件 <stdlib.h>
定义于头文件 <string.h>
定义于头文件 <time.h>
定义于头文件 <uchar.h>
(C11 起)
定义于头文件 <wchar.h>
(C95 起)
typedef /*implementation-defined*/ size_t;

size_tsizeof_Alignof (C11 起)offsetof 的结果的无符号整数类型,定义取决于数据模型

size_t 的位宽不小于 16 。

(C99 起)

注解

size_t 能存储理论上可行的任何类型(包括数组)对象的最大大小。

size_t 通常用于数组下标和循环计数。将如 unsigned int 的其他类型用作数组下标的的程序,可能在 64 位系统上失败,例如在下标超过 UINT_MAX 时,或若依赖 32 位模算术。

示例

#include <stdio.h>
#include <stddef.h>
#include <stdint.h>
 
int main(void)
{
    const size_t N = 100;
    int numbers[N];
    for (size_t ndx = 0; ndx < N; ++ndx)
        numbers[ndx] = ndx;
    printf("SIZE_MAX = %zu\n", SIZE_MAX);
    size_t size = sizeof numbers;
    printf("size = %zu\n", size);
}

可能的输出:

SIZE_MAX = 18446744073709551615
size = 400

引用

  • C11 standard (ISO/IEC 9899:2011):
  • 7.19 Common definitions <stddef.h> (p: 288)
  • 7.20.3 Limits of other integer types (p: 293)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.17 Common definitions <stddef.h> (p: 253)
  • 7.18.3 Limits of other integer types (p: 258)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 4.1.6 Common definitions <stddef.h>

参阅

两个指针相减返回的有符号整数类型
(typedef)
从指定结构体类型的起始到指定成员的字节位移
(宏函数)