L'opérateur de déréférencement (*)
Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 4 sur 63.
Maintenant que vous savez comment stocker des adresses dans des pointeurs, vous devez apprendre comment accéder à la valeur réelle stockée à cette adresse mémoire. L'opérateur de déréférencement (*) vous permet de « suivre » le pointeur pour obtenir la valeur vers laquelle il pointe.
Lorsque vous placez l'opérateur * devant une variable pointeur, il accède à la valeur stockée à l'adresse mémoire que contient le pointeur. Considérez cela comme si vous disiez « donne-moi ce qui se trouve à l'intérieur de la pièce à cette adresse ».
int age = 25;
int *ptr = &age;
printf("%d", *ptr); // Affiche 25 - la valeur de ageIl est important de comprendre que l'astérisque (*) a deux significations différentes en C. Lors de la déclaration d'un pointeur comme int *ptr;, l'astérisque indique que ptr est un pointeur. Lorsqu'il est utilisé avec un pointeur existant comme *ptr, il déréférence le pointeur pour accéder à la valeur vers laquelle il pointe.
L'opérateur de déréférencement est essentiel car il complète le cycle des pointeurs : vous pouvez stocker une adresse dans un pointeur avec &, puis récupérer la valeur à cette adresse avec *. Cela vous permet d'accéder et de modifier indirectement des variables via leurs adresses mémoire.
Défi
FacileÉcrivez un programme C qui démontre le flux de travail complet des pointeurs : déclaration, affectation d'adresse et déréférencement. Votre programme doit :
- Déclarer une variable entière nommée
valueet l'initialiser avec la valeur 75 - Déclarer une variable flottante nommée
priceet l'initialiser avec la valeur 19.99 - Déclarer un pointeur vers un entier nommé
value_ptr - Déclarer un pointeur vers un flottant nommé
price_ptr - Utiliser l'opérateur d'adresse pour affecter l'adresse de
valueàvalue_ptr - Utiliser l'opérateur d'adresse pour affecter l'adresse de
priceàprice_ptr - Utiliser l'opérateur de déréférencement pour afficher la valeur de
valueviavalue_ptr - Utiliser l'opérateur de déréférencement pour afficher la valeur de
priceviaprice_ptravec exactement 2 décimales
Votre sortie doit afficher les valeurs déréférencées dans le format suivant :
Value through pointer: 75
Price through pointer: 19.99Le défi teste votre compréhension de la manière dont l'opérateur de déréférencement récupère la valeur de la variable d'origine en suivant l'adresse stockée par le pointeur.
Aide-mémoire
L'opérateur de déréférencement (*) vous permet d'accéder à la valeur stockée à l'adresse mémoire détenue par un pointeur.
int age = 25;
int *ptr = &age;
printf("%d", *ptr); // Affiche 25 - la valeur de ageL'astérisque (*) a deux significations différentes en C :
- Dans les déclarations comme
int *ptr;- indique queptrest un pointeur - Avec des pointeurs existants comme
*ptr- déréférence le pointeur pour accéder à la valeur vers laquelle il pointe
L'opérateur de déréférencement complète le cycle du pointeur : stocker une adresse avec &, puis récupérer la valeur à cette adresse avec *.
Essayez vous-même
#include <stdio.h>
int main() {
// TODO: Écrivez votre code ici
// 1. Déclarer et initialiser les variables
// 2. Déclarer les pointeurs
// 3. Assigner les adresses aux pointeurs
// 4. Afficher les valeurs déréférencées
return 0;
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logic & Flow
1Les bases des pointeurs
Qu'est-ce qu'un pointeur ?Déclaration de pointeursL'opérateur d'adresse (&)L'opérateur de déréférencement (*)Pointeurs NULLRécapitulatif : Les bases des pointeurs4Projet : Utilitaire de texte simple
Présentation du projetCompter les caractères2Pointeurs et Tableaux
Noms de tableaux comme pointeursÉléments de tableau - PointeursArithmétique des pointeursComparaison de pointeursRécapitulatif : Parcours de tableau par pointeur5Pointeurs et fonctions
Passage par valeurPassage de pointeurs aux fonctionsModifier des variables via des pointeursUn exemple classique : SwapPassage de tableaux aux fonctionsRécapitulatif : Pointeurs comme arguments de fonction3Tableaux de caractères et chaînes
Les chaînes comme tableaux de charLe terminateur nulSaisie de chaînes avec scanfUtilisation de strlen()Utilisation de strcpy()Utilisation de strcat()Utilisation de strcmp()Récapitulatif : Fonctions de base sur les chaînes