13.2.3 Opérations sur les pointeurs

Icône de l'outil pédagogique Opérations sur les pointeurs

Elles seront très utiles pour les chaînes de caractères ou pour les variables structurées telles que tableaux ou structures.

Les principales opérations sur les pointeurs sont l'incrémentation et la décrémentation à l'aide des opérateurs ++ et ‐‐. Voir l’exemple du paragraphe 14.1.

Soient ptrI et ptrR deux pointeurs définis par :

short int* ptrI ;
double* ptrR ;

Les instructions ptrI ++ et ptrR ++ provoquent l'incrémentation des deux pointeurs, mais l'opération n'est pas la même dans les deux cas :

ptrI ++ incrémente ptrI du nombre d'octets correspondant à la taille d'un entier : ptrI pointe donc ensuite sur l'entier suivant.
ptrR ++ incrémente ptrR du nombre d'octets correspondant à la taille d'un réel double : ptrR pointe donc sur le réel double suivant.

On peut aussi additionner un entier n à un pointeur : le pointeur ptr+n pointe sur le nème objet qui suit celui pointé par ptr.

char text[10] ;
char *ptr1, *ptr2 ;
ptr1 = text ; /* ptr1 pointe sur l'élément 0 du tableau */
ptr2 = ptr1 + 5 ; /* ptr2 pointe l'élément 5 du tableau */
/* *(ptr1+i) est synonyme de text[i] ou ptr[i], beaucoup plus lisible */

On peut appliquer les opérateurs relationnels (>, <, != etc ...) à des pointeurs. Voir exemple du paragraphe 14.1.

On utilise souvent la comparaison d'un pointeur avec la valeur NULL :

if ( ptr == NULL ) exit(0) ; /* termine le programme "brutalement" */