¿Qué es size_t en C?

Me estoy confundiendo con size_t en C. Sé que es devuelto por el operador sizeof. ¿Pero qué es exactamente? ¿Es un tipo de datos?

Digamos que tengo un bucle for:

for(i = 0; i < some_size; i++)

¿Debo usar int i; o size_t i;?

Solución

De Wikipedia:

Según el estándar ISO C de 1999 (C99), size_t es un entero sin signo

de al menos 16 bits (ver secciones 7.17 y 7.18.3).

size_t es un tipo de datos sin signo definido por varios estándares de C/C++, por ejemplo, el estándar C99 ISO/IEC 9899, que se define en stddef.h.1 Puede ser importado además mediante la inclusión de stdlib.h ya que este archivo internamente sub incluye stddef.h.

Este tipo se utiliza para representar el tamaño de un objeto. Las funciones de la biblioteca que toman o devuelven tamaños esperan que éstos que sean del tipo o tengan el tipo de retorno de tamaño_t. Además, las funciones más más frecuentemente utilizado por el compilador el operador sizeof debe evaluarse a un valor constante que sea compatible con size_t.

Como implicación, size_t es un tipo garantizado para contener cualquier índice de array.

Comentarios (9)

size_t es un tipo sin signo. Por lo tanto, no puede representar ningún valor negativo (

Comentarios (17)

La página de manual de types.h dice:

size_t debe ser un tipo entero sin signo

Comentarios (0)