Namespaces
Variants

size_t

From cppreference.net
< c ‎ | types
Défini dans l'en-tête <stddef.h>
Défini dans l'en-tête <stdio.h>
Défini dans l'en-tête <stdlib.h>
Défini dans l'en-tête <string.h>
Défini dans l'en-tête <time.h>
Défini dans l'en-tête <uchar.h>
(depuis C11)
Défini dans l'en-tête <wchar.h>
(depuis C95)
typedef /*implementation-defined*/ size_t ;

size_t est le type entier non signé du résultat de sizeof , offsetof et _Alignof (jusqu'en C23) alignof (depuis C23) , selon le modèle de données .

La largeur en bits de size_t n'est pas inférieure à 16.

(depuis C99)

Table des matières

Notes

size_t peut stocker la taille maximale d'un objet théoriquement possible de n'importe quel type (y compris les tableaux).

size_t est couramment utilisé pour l'indexation de tableaux et le comptage de boucles. Les programmes qui utilisent d'autres types, tels que unsigned int , pour l'indexation de tableaux peuvent échouer, par exemple sur des systèmes 64 bits lorsque l'index dépasse UINT_MAX ou s'il repose sur une arithmétique modulaire 32 bits.

Implémentation possible

typedef typeof ( sizeof ( 0 ) ) size_t ;

(depuis C23)

Exemple

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

Sortie possible :

sum = 5050
size = 404
SIZE_MAX = 18446744073709551615

Références

  • Norme C23 (ISO/CEI 9899:2024) :
  • 7.19 Définitions communes <stddef.h> (p: TBD)
  • 7.20.3 Limites des autres types entiers (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.19 Définitions communes <stddef.h> (p: 211)
  • 7.20.3 Limites des autres types entiers (p: 215)
  • Norme C11 (ISO/CEI 9899:2011) :
  • 7.19 Définitions communes <stddef.h> (p: 288)
  • 7.20.3 Limites des autres types entiers (p: 293)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.17 Définitions communes <stddef.h> (p: 253)
  • 7.18.3 Limites des autres types entiers (p: 258)
  • Norme C89/C90 (ISO/IEC 9899:1990) :
  • 4.1.6 Définitions communes <stddef.h>

Voir aussi

type entier signé renvoyé lors de la soustraction de deux pointeurs
(typedef)
décalage en octets depuis le début d'un type struct jusqu'au membre spécifié
(macro de fonction)