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.