Exercice 34
Énoncé
Quels résultats fournira ce programme :
#include
#include
using namespace std ;
main()
{
int t [3] ;
int i, j ;
int * adt ;
for (i=0, j=0 ; i<3 ; i++) t[i] = j++ + i ; /* 1 */
for (i=0 ; i<3 ; i++) cout << t[i] << " " ; /* 2 */
cout << "\n" ;
for (i=0 ; i<3 ; i++) cout << *(t+i) << " " ; /* 3 */
printf ("\n") ;
for (adt = t ; adt < t+3 ; adt++) cout << *adt << " " ; /* 4 */
cout << "\n" ;
for (adt = t+2 ; adt>=t ; adt--) cout << *adt << " "; /* 5 */
cout << "\n" ;
}
/* 1 */ remplit le tableau avec les valeurs 0 (0+0), 2 (1+1) et 4 (2+2) ; on obtiendrait plus
simplement le même résultat avec l’expression 2*i.
/* 2 */ affiche classiquement les valeurs du tableau t, dans l’ordre naturel.
/* 3 */ fait la même chose, en utilisant le formalisme pointeur au lieu du formalisme
tableau. Ainsi, *(t+i) est parfaitement équivalent à t[i].
/* 4 */ fait la même chose, en utilisant la lvalue adt (à laquelle on a affecté initialement
l’adresse t du tableau) et en l’incrémentant pour parcourir les différentes adresses des
4 éléments du tableau.
/* 5 */ affiche les valeurs de t, à l’envers, en utilisant le même formalisme pointeur que
dans 4. On aurait pu écrire, de façon équivalente :
for (i=2 ; i>=0 ; i--) cout << t[i] << " " ;
Voici les résultats fournis par ce programme :
0 2 4
77
Précédent

- 78/398

Suivant