/* Fichier infos1.cpp Notions d'adresse, de pointeur Transmission de resultats via pointeurs Surcharge des fonctions (fait partie du concept polymorphisme de la POO) Voir l'execution pour comprendre ces notions */ #include #include using namespace std; void demo1() { cout << "Demo 1 : informations\n"; int age1 = 23, age2 = 18; char sexe = 'F' ; int * p = &age1 ; // p pointe vers age1 ainsi *p <==> age1 cout << " info valeur adresse octets octets\n"; cout << setw(8) << "age1 " << setw(10) << age1 << setw(10) << (int) &age1 << setw(8) << sizeof(age1) << setw(8) << sizeof(int) << endl; cout << setw(8) << "age2 " << setw(10) << age2 << setw(10) << (int) &age2 << setw(8) << sizeof(age2) << setw(8) << sizeof(int) << endl; cout << setw(8) << "sexe " << setw(10) << sexe << setw(10) << (int) &sexe << setw(8) << sizeof(sexe) << setw(8) << sizeof(char) << endl; cout << setw(8) << "p " << setw(10) << (int) p << setw(10) << (int) &p << setw(8) << sizeof(p) << setw(8) << sizeof(int *) << endl; cout << setw(8) << "*p " << setw(10) << *p << setw(10) << (int) &(*p) << setw(8) << sizeof(*p) << setw(8) << sizeof(int) << endl; cout << endl << endl; *p = 29; // on modifie *p cout << "*p vaut maintenant : " << *p << endl; cout << "age1 vaut : " << age1 << endl; p = &age2; // p pointe maintenant vers age2 *p = *p + 10; // on ajoute 10 à *p cout << "*p vaut maintenant : " << *p << endl; cout << "age2 vaut : " << age2 << endl; cout << endl << endl; } void permuter(int * p1, int * p2) { int tempo = *p1; *p1 = *p2; *p2 = tempo; } void permuter(char * p1, char * p2) { char tempo = *p1; *p1 = *p2; *p2 = tempo; } void permuter(float * p1, float * p2) { float tempo = *p1; *p1 = *p2; *p2 = tempo; } void demo2() { cout << "Demo 2 : parametres transmis via pointeurs\n"; int age1 = 23, age2 = 18; cout << "avant de permuter : age1 vaut " << age1 << " et age2 vaut " << age2 << endl; permuter(&age1, &age2); cout << "apres de permuter : age1 vaut " << age1 << " et age2 vaut " << age2 << endl; cout << endl << endl; char sexe1 = 'F', sexe2 = 'M'; cout << "avant de permuter : sexe1 vaut " << sexe1 << " et sexe2 vaut " << sexe2 << endl; permuter(&sexe1, &sexe2); cout << "apres de permuter : sexe1 vaut " << sexe1 << " et sexe2 vaut " << sexe2 << endl; float taille1 = 1.75, taille2 = 1.68; cout << "avant de permuter : taille1 vaut " << taille1 << " et taille2 vaut " << taille2 << endl; permuter(&taille1, &taille2); cout << "apres de permuter : taille1 vaut " << taille1 << " et taille2 vaut " << taille2 << endl; } int main() { demo1(); demo2(); return 0; } /* Exécution : Demo 1 : informations info valeur adresse octets octets age1 23 2686716 4 4 age2 18 2686712 4 4 sexe F 2686711 1 1 p 2686716 2686704 4 4 *p 23 2686716 4 4 *p vaut maintenant : 29 age1 vaut : 29 *p vaut maintenant : 28 age2 vaut : 28 Demo 2 : parametres transmis via pointeurs avant de permuter : age1 vaut 23 et age2 vaut 18 apres de permuter : age1 vaut 18 et age2 vaut 23 avant de permuter : sexe1 vaut F et sexe2 vaut M apres de permuter : sexe1 vaut M et sexe2 vaut F avant de permuter : taille1 vaut 1.75 et taille2 vaut 1.68 apres de permuter : taille1 vaut 1.68 et taille2 vaut 1.75 -------------------------------- Process exited after 0.05242 seconds with return value 0 Appuyez sur une touche pour continuer... */