44 lines
2.2 KiB
Markdown
44 lines
2.2 KiB
Markdown
#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.
|
|
|