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), зависящий от модели данных.
| Разрядность | (начиная с 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>
См. также
| знаковый целочисленный тип, возвращаемый при вычитании двух указателей (определение типа) |
|
| смещение в байтах от начала структуры до указанного члена (макрос-функция) |
|
Документация по C++ для size_t |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/types/size_t