/* Fichier Pointeur2.cpp Pointeur vs tableau Observez que certains codes pour afficher ne fonctionnent pas (donnez de mauvais affichage) À étudier pour comprendre la manipulation de pointeurs */ #include #include // pour setw et setprecision using namespace std; void continuer() { cout << endl << endl << "Appuyez sur une lettre suivie de Entree " ; char lettre; cin >> lettre ; cout << endl << endl; } void afficher(float taille[], int nbPers) { cout.setf(ios::fixed); cout.setf(ios::showpoint); cout << "\nContenu du tableau des tailles : " << endl; cout << "indice taille[i]" << endl ; for(int i = 0 ; i < nbPers; i++) cout << setw(5) << i << ") " << setw(8) << setprecision(2) << taille[i] << endl; cout << endl << endl ; } void afficher2(float * p, int nbPers) { cout.setf(ios::fixed); cout.setf(ios::showpoint); cout << "\nContenu du tableau des tailles : " << endl; cout << "indice taille[i]" << endl ; for(int i = 0 ; i < nbPers; i++) { cout << setw(5) << i << ") " << setw(8) << setprecision(2) << *p << endl; p++; } cout << endl << endl ; } void afficher3(float * p, int nbPers) { cout.setf(ios::fixed); cout.setf(ios::showpoint); cout << "\nContenu du tableau des tailles avec afficher3 : " << endl; cout << "indice taille[i]" << endl ; for(int i = 0 ; i < nbPers; i++) cout << setw(5) << i << ") " << setw(8) << setprecision(2) << *p++ << endl; cout << endl << endl ; } void afficher4(float * p, int nbPers) { cout.setf(ios::fixed); cout.setf(ios::showpoint); cout << "\nContenu du tableau des tailles avec afficher4 (attention!!!!) : " << endl; cout << "indice taille[i]" << endl ; for(int i = 0 ; i < nbPers; i++) cout << setw(5) << i << ") " << setw(8) << setprecision(2) << *(++p) << endl; cout << endl << endl ; } void afficher5(float * p, int nbPers) { cout.setf(ios::fixed); cout.setf(ios::showpoint); cout << "\nContenu du tableau des tailles avec afficher5 (attention!!!!) : " << endl; cout << "indice taille[i]" << endl ; for(int i = 0 ; i < nbPers; i++) cout << setw(5) << i << ") " << setw(8) << setprecision(2) << (*p)++ << endl; cout << endl << endl ; } void demo1(float taille[], int nbPers) { cout << "Premiere demonstration :\n"; cout << "adresse de taille[0] : " << (int) &taille[0] << endl ; cout << "valeur de taille : " << (int) taille << endl ; float * p = taille ; // comme float * p = &taille[0]; cout << "*p vaut " << setw(5) << setprecision(2) << *p << endl ; cout << "taille[0] " << setw(5) << setprecision(2) << taille[0] << endl ; p = p + 3 ; // p pointe vers 3 cases plus loin, c'est à dire taille[3] cout << "valeur de p : " << (int) p << endl ; cout << "adresse de taille[3] : " << (int) &taille[3] << endl ; cout << "*p vaut " << *p << " et taille[3] vaut " << taille[3] << endl; afficher2(taille, nbPers); afficher3(taille, nbPers); afficher4(taille, nbPers); afficher5(taille, nbPers); } int main() { float taille[] = { 1.72, 1.68, 1.53, 1.81, 1.75 }; int nbPers = sizeof(taille) / sizeof(int) ; afficher(taille, nbPers); demo1(taille, nbPers); continuer(); return 0; } /* Exécution : Contenu du tableau des tailles : indice taille[i] 0) 1.72 1) 1.68 2) 1.53 3) 1.81 4) 1.75 Premiere demonstration : adresse de taille[0] : 2686720 valeur de taille : 2686720 *p vaut 1.72 taille[0] 1.72 valeur de p : 2686732 adresse de taille[3] : 2686732 *p vaut 1.81 et taille[3] vaut 1.81 Contenu du tableau des tailles : indice taille[i] 0) 1.72 1) 1.68 2) 1.53 3) 1.81 4) 1.75 Contenu du tableau des tailles avec afficher3 : indice taille[i] 0) 1.72 1) 1.68 2) 1.53 3) 1.81 4) 1.75 Contenu du tableau des tailles avec afficher4 (attention!!!!) : indice taille[i] 0) 1.68 1) 1.53 2) 1.81 3) 1.75 4) 0.00 Contenu du tableau des tailles avec afficher5 (attention!!!!) : indice taille[i] 0) 1.72 1) 2.72 2) 3.72 3) 4.72 4) 5.72 Appuyez sur une lettre suivie de Entree k */