size_t

来自cppreference.com
< c‎ | types
在标头 <stddef.h> 定义
在标头 <stdio.h> 定义
在标头 <stdlib.h> 定义
在标头 <string.h> 定义
在标头 <time.h> 定义
在标头 <uchar.h> 定义
(C11 起)
在标头 <wchar.h> 定义
(C95 起)
typedef /* 由实现定义 */ size_t;

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

size_t 的位宽不小于 16。

(C99 起)

注解

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

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

可能的实现

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 = 400
SIZE_MAX = 18446744073709551615

引用

  • C23 标准(ISO/IEC 9899:2024):
  • 7.19 Common definitions <stddef.h> (第 TBD 页)
  • 7.20.3 Limits of other integer types (第 TBD 页)
  • C17 标准(ISO/IEC 9899:2018):
  • 7.19 Common definitions <stddef.h> (第 211 页)
  • 7.20.3 Limits of other integer types (第 215 页)
  • C11 标准(ISO/IEC 9899:2011):
  • 7.19 Common definitions <stddef.h> (第 288 页)
  • 7.20.3 Limits of other integer types (第 293 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.17 Common definitions <stddef.h> (第 253 页)
  • 7.18.3 Limits of other integer types (第 258 页)
  • C89/C90 标准(ISO/IEC 9899:1990):
  • 4.1.6 Common definitions <stddef.h>

参阅

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