Pointeurs
Les pointeurs du langage C : l'adresse et l'opérateur &, la déclaration et le déréférencement, le pointeur nul, l'arithmétique sur les tableaux, le passage par adresse et le pointeur pendant.
- 27 cartes
- 5 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Les chiffres
- Mises en situation
Quelques cartes du deck
Adresse mémoire : de quoi s'agit-il ?
Voir la réponse
Numéro qui repère une case de la mémoire, comme le numéro d'une rue repère une maison ; en C, on l'obtient avec l'opérateur &.
Une variable occupe une ou plusieurs cases : &a donne l'adresse de la première. Une adresse s'affiche avec %p, et peut changer d'une exécution à l'autre.
Qu'affiche ce programme ?
```c
int a = 3;
int *p = &a;
*p = 7;
printf("%d\n", a);`- 7
- 3
- 10
- L'adresse de a
Voir la réponse
7
p contient l'adresse de a : *p = 7 écrit dans la case de a, donc a vaut 7. Exécuté, le programme affiche 7. 3 oublie que p désigne a ; l'adresse ne s'afficherait qu'avec %p.
Pour un pointeur p de type int *, l'expression p + 1 désigne l'élément … : l'adresse augmente de … octets, pas de 1.
Voir la réponse
Pour un pointeur p de type int *, l'expression p + 1 désigne l'élément suivant : l'adresse augmente de sizeof(int) octets, pas de 1.
Le compilateur multiplie par la taille du type pointé. C'est pourquoi p + 1 tombe sur l'élément suivant d'un tableau, quel que soit son type.
Pointeur : de quoi s'agit-il ?
Voir la réponse
Variable dont la valeur est l'adresse d'une autre donnée ; son type précise le type de ce qu'elle désigne.
int *p déclare un pointeur vers un int. Il occupe lui-même de la place (8 octets sur un système 64 bits), distincte de celle de la donnée pointée.