Solution: En traitant des tableaux à l'aide de pointeurs, nous utilisons souvent des expressions de la forme:
for (P=A ; P<A+N ; P++)
|
ou
|
for (P=CH ; *P ; P++)
|
{
|
{
| |
...
|
...
| |
}
|
}
|
ou les versions analogues avec while.
Dans ces boucles, le pointeur P est incrémenté à la fin du bloc d'instruction et comparé ensuite à la condition de la boucle. Au moment où la condition est remplie, P pointe déjà à l'extérieur du tableau; plus précisément sur le premier élément derrière le tableau.
Exemple:
#include <stdio.h> main() { /* Déclarations */ int A[10]; /* tableau */ int *P; /* pointeur dans A */ /* Saisie des données */ printf("Introduire 10 entiers : \n"); for (P=A; P<A+10; P++) scanf("%d", P); /* Affichage du tableau */ printf("Tableau donné A :\n"); for (P=A; P<A+10; P++) printf("%d ", *P); printf("\n"); return 0; }A la fin des boucles, P contient l'adresse A+10 et pointe donc sur l'élément A[10] qui ne fait plus partie du tableau.