#C 11 ### Exercice 2 Description ligne par ligne du programme: 1. la case mémoire 'a' prend la valeur 3 2. la case mémoire 'p1' prend en valeur l'adresse de la case mémoire 'a' 3. la case mémoire 'b' prend la valeur stoquée dans 'a' (donc 3) 4. la case mémoire 'p2' prend en valeur l'adresse de la case mémoire 'b' (différente de celle de 'a') 5. la case mémoire 'a' prend la valeur 5 6. la valeur stoquée dans la case mémoire dont l'adresse est stoquée en case 'p1' (donc 'a') est incrémentée (passe de 5 à 6) 7. la case mémoire 'b' prend la valeur 8 8. la case mémoire dont l'adresse est stoquée en 'p2' (donc 'b') prend la valeur 12. 9. la case mémoire 'p1' prend pour valeur l'adresse stoquée dans la case mémoire 'p2' (donc l'adresse de 'b') 10. la case mémoire dont l'adresse est stoquée en 'p1' (donc 'b' maintenant) prend la valeur 15. État final: p1=p2=&b et a=6 et b=15 ### Exercice 3 Ce programme produit des *warnings* à la compilation sur des erreurs de cast. En effet, un pointeur vers un flottant (&x) essaye de rentrer dans un pointeur vers un flottant, ce qui a techinquement la même taille, mais qui exprime souvent une erreur de conception. Sinon, le programme affiche l'entier représenté par la suite de bits corerspondant à la représentaton en binaire du flotant 2.4. En l'ocurence `1075419546`. ### Exercice 4 Description ligne par ligne du programme: 1. Une case 'a' est réservée à un entier. 2. L'adresse de 'a' est stoquée dans une autre case mémoire 'addr' 3. Une nouvelle case memoire est créee pour y stoquer le resultat de l'appel à la fonction f 0. Le paramètre est passée en valeur. Ce qui signifie que x contient la valeur qui lui a été donnée en paramètre, donc l'adresse de la case mémoire 'a'. 1. La valeur contenue dans la case mémoire dont l'adresse est stoquée dans la case mémoire 'x' est définie à 0. 2. La case mémoire 'x' est définie à 0 (ne pointe plus vers aucune case mémoire) (le pointeur NULL). 3. Renvoie la valeur présente dans la case mémoire 'x'. Donc a=0, addr=&a, addr2=NULL. ### Exercice 6 `scanf` prend des pointeurs afin de pouvoir «retourner» plusieurs valeurs. Avec des valeurs, on aurait accès qu'à la valeur de retour de scanf, pas très utile.