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 бит.

(начиная с 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 = 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)
смещение в байтах от начала структуры до указанного члена
(function macro)
C++ documentation для size_t