Exercice 37
Énoncé
Quels résultats fournira ce programme :
#include
using namespace std ;
main()
{ int t[4] = {10, 20, 30, 40} ;
int * ad [4] ;
int i ;
for (i=0 ; i<4 ; i++) ad[i] = t+i ; /* 1 */
for (i=0 ; i<4 ; i++) cout << * ad[i] << " " ; /* 2 */
cout << "\n" ;
cout << * (ad[1] + 1) << " " << * ad[1] + 1 << "\n" ; /* 3 */
}
Le tableau ad est un tableau de 4 éléments ; chacun de ces éléments est un pointeur sur
un int. L’instruction /* 1 */ remplit le tableau ad avec les adresses des 4 éléments du
tableau t. L’instruction /* 2 */ affiche finalement les 4 éléments du tableau t ; en effet, *
ad[i] représente la valeur située à l’adresse ad[i]. /* 2 */ est équivalente ici à :
for (i=0 ; i<4 ; i++) cout << t[i] << " " ;
Enfin, dans l’instruction /* 3 */, *(ad[1] + 1) représente la valeur située à l’entier suivant
celui d’adresse ad[1] ; il s’agit donc de t[2]. En revanche, *ad[1] + 1 représente la valeur
située à l’adresse ad[1] augmentée de 1, autrement dit t[1] + 1.
Voici, en définitive, les résultats fournis par ce programme :
10 20 30 40
30 21
82
Énoncé
Quels résultats fournira ce programme :
#include
using namespace std ;
main()
{ int t[4] = {10, 20, 30, 40} ;
int * ad [4] ;
int i ;
for (i=0 ; i<4 ; i++) ad[i] = t+i ; /* 1 */
for (i=0 ; i<4 ; i++) cout << * ad[i] << " " ; /* 2 */
cout << "\n" ;
cout << * (ad[1] + 1) << " " << * ad[1] + 1 << "\n" ; /* 3 */
}
Le tableau ad est un tableau de 4 éléments ; chacun de ces éléments est un pointeur sur
un int. L’instruction /* 1 */ remplit le tableau ad avec les adresses des 4 éléments du
tableau t. L’instruction /* 2 */ affiche finalement les 4 éléments du tableau t ; en effet, *
ad[i] représente la valeur située à l’adresse ad[i]. /* 2 */ est équivalente ici à :
for (i=0 ; i<4 ; i++) cout << t[i] << " " ;
Enfin, dans l’instruction /* 3 */, *(ad[1] + 1) représente la valeur située à l’entier suivant
celui d’adresse ad[1] ; il s’agit donc de t[2]. En revanche, *ad[1] + 1 représente la valeur
située à l’adresse ad[1] augmentée de 1, autrement dit t[1] + 1.
Voici, en définitive, les résultats fournis par ce programme :
10 20 30 40
30 21
82
