Références et Déréférencements
Les pointeurs reposent sur deux opérateurs :
- L’opérateur d’adresse
&. - L’opérateur de déréférencement
*.
Opérateur d’adresse
L’opérateur d’adresse, représenté par &, permet d’interagir directement avec la mémoire vive (RAM) de l’ordinateur. L’utilisation de & permet d’obtenir l’adresse mémoire réelle d’un objet.
Main.c
123456789101112#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable into RAM: %p\n", &x); // using reference operator `&` for getting address return 0; }
Le spécificateur de format utilisé pour afficher les adresses (pointeurs) est %p.
Les adresses sont généralement exprimées en notation hexadécimale.
Opérateur de déréférencement
Inversement, l’opérateur * fournit le nom du résident lorsqu’on lui donne son adresse. Comment utiliser cet opérateur si l’on ne manipule pas directement des adresses ? Si une expression comme &x retourne l’adresse de la variable x, appliquer l’opérateur * à cette expression (*&x) donne la valeur de la variable stockée à cette adresse.
Essentiellement, *&x est équivalent à x.
Main.c
1234567891011121314#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable in RAM: %p\n", &x); // using reference operator `&` printf("Dereferencing address of variable: %d", *(&x)); // using dereference operator `*` return 0; }
Ne pas confondre l'opérateur de déréférencement (*x) avec l'opérateur de multiplication (x*y).
Swipe to start coding
- Créer un tableau d'entiers de 5 éléments et le remplir.
- Récupérer l'adresse du troisième élément.
- Incrémenter l'adresse du troisième élément et déréférencer l'adresse incrémentée pour afficher la valeur pointée.
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain the difference between the address-of and dereference operators with an example?
Why are memory addresses usually shown in hexadecimal?
Can you show how to use these operators in a simple code snippet?
Awesome!
Completion rate improved to 2.63
Références et Déréférencements
Glissez pour afficher le menu
Les pointeurs reposent sur deux opérateurs :
- L’opérateur d’adresse
&. - L’opérateur de déréférencement
*.
Opérateur d’adresse
L’opérateur d’adresse, représenté par &, permet d’interagir directement avec la mémoire vive (RAM) de l’ordinateur. L’utilisation de & permet d’obtenir l’adresse mémoire réelle d’un objet.
Main.c
123456789101112#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable into RAM: %p\n", &x); // using reference operator `&` for getting address return 0; }
Le spécificateur de format utilisé pour afficher les adresses (pointeurs) est %p.
Les adresses sont généralement exprimées en notation hexadécimale.
Opérateur de déréférencement
Inversement, l’opérateur * fournit le nom du résident lorsqu’on lui donne son adresse. Comment utiliser cet opérateur si l’on ne manipule pas directement des adresses ? Si une expression comme &x retourne l’adresse de la variable x, appliquer l’opérateur * à cette expression (*&x) donne la valeur de la variable stockée à cette adresse.
Essentiellement, *&x est équivalent à x.
Main.c
1234567891011121314#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable in RAM: %p\n", &x); // using reference operator `&` printf("Dereferencing address of variable: %d", *(&x)); // using dereference operator `*` return 0; }
Ne pas confondre l'opérateur de déréférencement (*x) avec l'opérateur de multiplication (x*y).
Swipe to start coding
- Créer un tableau d'entiers de 5 éléments et le remplir.
- Récupérer l'adresse du troisième élément.
- Incrémenter l'adresse du troisième élément et déréférencer l'adresse incrémentée pour afficher la valeur pointée.
Solution
Merci pour vos commentaires !
single