Exercice langage C
[tab name=’Exercice langage C’]
- Le programme ci-dessous illustre le fonctionnement des pointeurs en affichant les différentes valeurs contenues dans les variables.
Lisez-le en essayant de le comprendre. Essayez de déduire quelles vont être les valeurs affichées par les instructions cout
.
#include using namespace std; int main(int argc, char **argv) { int i = 9; cout << "Contenu de i: '" << i << "'" << endl; cout << "Adresse de i: '" << (unsigned int)&i << "'" << endl << endl; /* On declare un pointeur sur int et on lui * affecte l'adresse de i. On dit que p * pointe sur i. */ int *p = &i; cout << "Contenu de p: '" << (unsigned int)p << "'" << endl; cout << "Adresse de p: '" << (unsigned int)&p << "'" << endl; cout << "Contenu de la variable pointee par p: '" << *p << "'" << endl << endl; // On affecte 10 a l'adresse pointee par p. *p = 10; cout << "Contenu de la variable pointee par p: '" << *p << "'" << endl; cout << "Contenu de i: '" << i << "'" << endl; // Partie a completer // Fin de la partie a completer return 0; }
2. Recopiez le programme donné dans emacs, compilez-le et lancez-le. Est-ce que les résultats affichés correspondent à ce que vous aviez prévu au point précédent?
Exercice langage C
Remarque: les adresses en mémoire sont toujours affichées sous forme hexadécimale (base 16). Pour les voir sous forme décimale, il faut les convertir en unsigned int, comme dans l’exemple ci-dessus.
3. Complétez le programme en incrémentant la variable i
de 10 (i = i + 10
), sans avoir recours directement à la variable i
(utilisez un pointeur). Affichez ensuite la valeur de i
pour vérifier que l’opération s’est bien déroulée.
4. Déclarez un nouveau pointeur sur int
que vous nommerez q
. Faites pointer q
sur i
. A nouveau, faites-le sans utiliser directement la variable i
. Affichez le contenu du pointeur q
pour vérifier votre code.
5. Déclarez une variable f
de type float
. Initialisez-la à . Echangez ensuite son contenu avec celui de i
, sans avoir recours à la variable i
. Affichez les valeurs de i
et f
.
Exercice langage C
6. Déclarez une nouvelle variable j
de type int
que vous initialisez à 8. Faites pointer q
sur j
. Maintenant, échangez les valeurs de i
et j
sans utiliser ni i
, ni j
.
Affichez finalement les valeurs de i
et j
.
[/tab][tab name=’Correction’]
#include using namespace std; int main(int argc, char **argv) { int i = 9; cout << "Contenu de i: '" << i << "'" << endl; cout << "Adresse de i: '" << (unsigned int)&i << "'" << endl << endl; /* On declare un pointeur sur int et on lui * affecte l'adresse de i. On dit que p * pointe sur i. */ int *p = &i; cout << "Contenu de p: '" << (unsigned int)p << "'" << endl; cout << "Adresse de p: '" << (unsigned int)&p << "'" << endl; cout << "Contenu de la variable pointee par p: '" << *p << "'" << endl << endl; // On affecte 10 a l'adresse pointee par p. *p = 10; cout << "Contenu de la variable pointee par p: '" << *p << "'" << endl; cout << "Contenu de i: '" << i << "'" << endl; // Partie a completer // 3. i incrementee de 10 cout << "3." << endl; *p = *p + 10; cout << "Contenu de i: '" << i << "'" << endl; // 4. nouveau pointeur sur i cout << "4." << endl; int *q = p; cout << "Contenu de la variable pointee par q: '" << *q << "'" << endl; // 5. echange cout << "5." << endl; float f = 5; int t = *p; *p = int(f); f = t; cout << "Contenu de i: '" << i << "'" << endl; cout << "Contenu de f: '" << f << "'" << endl; // 6. echange (2) cout << "6." << endl; int j = 8; q = &j; int k = *q; *q = *p; *p = k; cout << "Contenu de i: '" << i << "'" << endl; cout << "Contenu de j: '" << j << "'" << endl; // Fin de la partie a completer return 0; }
Exercice langage C
Cours gratuit, Cours informatique, Télécharger cours, Exercice gratuit, Exercice langage C
[/tab][end_tabset skin= »lightness » ]