В C есть 5 стандартных целочисленных типов без знака:
unsigned char
unsigned short
unsigned int
unsigned long
unsigned long long
с различными требованиями к их размерам и диапазонам (кратко, диапазон каждого типа является подмножеством диапазона следующего типа, но некоторые из них могут иметь тот же диапазон).
size_tявляется typedef(т. е. псевдонимом) для некоторого типа без знака (возможно, одного из вышеперечисленных, но возможно расширенного целочисленного типа без знака , хотя это маловероятно). Это тип, выдаваемый sizeofоператором.
В одной системе может иметь смысл использовать unsigned intдля представления размеров; с другой стороны, имеет смысл использовать unsigned longили unsigned long long. ( size_tВряд ли будет либо unsigned charили unsigned short, но это разрешено).
Цель size_tсостоит в том, чтобы избавить программиста от необходимости беспокоиться о том, какой из предопределенных типов используется для представления размеров.
Код, который предполагает, что sizeofдает unsigned int, не будет переносимым. Код, который предполагает, что он дает a size_t, с большей вероятностью будет переносимым.
typedef /*This part is implementation dependent */ size_t;