C size_t
и C ++ std::size_t
одинаковы.
В C он определен в <stddef.h>
, а в C ++ - в <cstddef>
, содержимое которого совпадает с заголовком C (см. Цитату ниже). Он определяется как целочисленный тип без знака результата оператора sizeof .
Стандарт C говорит в §17.7 / 2,
size_t, который является целочисленным типом без знака результата результата оператора sizeof
И C ++ Standard говорит (о cstddef
заголовке) в §18.1 / 3,
Содержимое совпадает с заголовком библиотеки Standard C, со следующими изменениями .
Так что да, оба одинаковы; единственное отличие состоит в том, что C ++ определяет size_t
в std
пространстве имен.
Также обратите внимание, что в приведенной выше строке также написано «со следующими изменениями» , что не относится к size_t
. Скорее, это относится к новым дополнениям (в основном), внесенным C ++ в язык (не представлен в C), которые также определены в том же заголовке.
В Википедии есть очень хорошая информация о диапазоне и размере хранилища size_t:
Диапазон и размер хранилища size_t
Тип фактический size_t
зависит от платформы ; распространенная ошибка
предполагается, что size_t такой же, как
int без знака, что может привести к
ошибки программирования, [3] [4] при перемещении
от 32 до 64-битной архитектуры, для
Пример.
Согласно ISO C 1999 года
стандарт (C99), size_t без знака
целочисленный тип не менее 16 бит.
А остальное вы можете прочитать с этой страницы в википедии.