Namespaces
Variants

size_t

From cppreference.net
< c ‎ | types
Definido en el encabezado <stddef.h>
Definido en el encabezado <stdio.h>
Definido en el encabezado <stdlib.h>
Definido en el encabezado <string.h>
Definido en el encabezado <time.h>
Definido en el encabezado <uchar.h>
(desde C11)
Definido en el encabezado <wchar.h>
(desde C95)
typedef /*implementation-defined*/ size_t ;

size_t es el tipo entero sin signo del resultado de sizeof , offsetof y _Alignof (hasta C23) alignof (desde C23) , dependiendo del modelo de datos .

El ancho en bits de size_t no es menor que 16.

(desde C99)

Contenidos

Notas

size_t puede almacenar el tamaño máximo de un objeto teóricamente posible de cualquier tipo (incluyendo arreglos).

size_t se utiliza comúnmente para indexación de arreglos y conteo de bucles. Los programas que utilizan otros tipos, como unsigned int , para indexación de arreglos pueden fallar en, por ejemplo, sistemas de 64 bits cuando el índice excede UINT_MAX o si depende de aritmética modular de 32 bits.

Implementación posible

typedef typeof ( sizeof ( 0 ) ) size_t ;

(desde C23)

Ejemplo

#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);
}

Salida posible:

sum = 5050
size = 404
SIZE_MAX = 18446744073709551615

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.19 Definiciones comunes <stddef.h> (p: TBD)
  • 7.20.3 Límites de otros tipos enteros (p: TBD)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.19 Definiciones comunes <stddef.h> (p: 211)
  • 7.20.3 Límites de otros tipos enteros (p: 215)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.19 Definiciones comunes <stddef.h> (p: 288)
  • 7.20.3 Límites de otros tipos enteros (p: 293)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.17 Definiciones comunes <stddef.h> (p: 253)
  • 7.18.3 Límites de otros tipos enteros (p: 258)
  • Estándar C89/C90 (ISO/IEC 9899:1990):
  • 4.1.6 Definiciones comunes <stddef.h>

Véase también

tipo entero con signo devuelto al restar dos punteros
(typedef)
desplazamiento en bytes desde el inicio de un tipo struct hasta el miembro especificado
(macro de función)