Spec-Zone.ru › C

size_t

Определён в заголовочном файле <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 обычно используется для индексации массивов и подсчёта итераций циклов. Программы, использующие для индексации массивов другие типы, например unsignedint, могут работать некорректно, например, в 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> (с.: 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>

См. также

ptrdiff_t
знаковый целочисленный тип, возвращаемый при вычитании двух указателей
(определение типа)
offsetof
смещение в байтах от начала структуры до указанного члена
(макрос-функция)
Документация по C++ для size_t

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/types/size_t

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API