Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé

Type ptrdiff_t

Le type size_t Le type rsize_t


Entête à inclure

#include <stddef.h>  // <cstddef> en C++

Type ptrdiff_t

Le type ptrdiff_t est un type entier signé prévu pour stocker le résultat de la soustraction de deux pointeurs. Cette opération n'a de sens que si les deux pointeurs désignent des éléments du même tableau, ou la position juste après le dernier élément de ce tableau.

L'exemple suivant calcule la distance entre deux éléments d'un même tableau.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>

int main() {

    int values[] = { 10, 20, 30, 40, 50 };

    int * first = &values[1];
    int * second = &values[4];
    ptrdiff_t distance = second - first;

    printf( "distance == %ld\n", (long) distance );

    return EXIT_SUCCESS;
}
Calculer une différence de pointeurs

Les résultats produits par cet exemple sont :

distance == 3
La soustraction de pointeurs provenant de deux tableaux différents produit un comportement indéfini. Le type ptrdiff_t ne rend pas cette opération valide : il fournit seulement le bon type pour conserver un résultat valide.

Sujets connexes

La librairie stddef.h
size_t
Utilisation de pointeurs


Le type size_t Le type rsize_t




Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé