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.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Les chiffres
  5. 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.