Поскольку никто еще не упомянул об этом, основным лингвистическим значением size_t
является то, что оператор sizeof
возвращает значение этого типа. Аналогичным образом, основное значение ptrdiff_t
заключается в том, что вычитание одного указателя из другого даст значение этого типа. Функции библиотеки, которые его принимают, делают это, потому что это позволит таким функциям работать с объектами, размер которых превышает UINT_MAX в системах, где такие объекты могут существовать, не заставляя вызывающих абонентов тратить код, передавая значение, большее, чем «unsigned int» в системах, где больший тип было бы достаточно для всех возможных объектов.