L'opérateur d'adresse (&)
Fait partie de la section Logique & Flux du Journey C de Coddy. Leçon 3 sur 63.
Maintenant que tu sais déclarer des pointeurs, tu dois apprendre à y stocker effectivement une adresse mémoire. L’opérateur d’adresse (&) est la clé pour obtenir l’adresse mémoire de n’importe quelle variable.
Lorsque vous placez l’opérateur & devant le nom d’une variable, il renvoie l’adresse mémoire où cette variable est stockée. Considérez cela comme la question « Où cette variable réside-t-elle en mémoire ? »
int age = 25;
int *ptr;
ptr = &age; // Stocke l'adresse de 'age' dans 'ptr'Dans cet exemple, &age nous donne l’adresse mémoire de la variable age. Nous affectons ensuite cette adresse à notre pointeur ptr. Désormais, ptr « pointe vers » la variable age.
L’opérateur d’adresse est essentiel, car c’est le lien entre les variables ordinaires et les pointeurs. Sans lui, vous ne pourriez pas indiquer à un pointeur vers quelle variable pointer. N’oubliez pas que les types de données doivent correspondre : vous ne pouvez affecter l’adresse d’un entier qu’à un pointeur déclaré pour des entiers.
Défi
FacileÉcrivez un programme C qui montre comment utiliser l’opérateur d’adresse pour relier des variables à des pointeurs. Votre programme doit :
- Déclarer une variable entière nommée
numberet l’initialiser avec la valeur 42 - Déclarer une variable caractère nommée
letteret l’initialiser avec la valeur 'X' - Déclarer un pointeur vers un entier nommé
num_ptr - Déclarer un pointeur vers un caractère nommé
char_ptr - Utiliser l’opérateur d’adresse pour affecter l’adresse de
numberànum_ptr - Utiliser l’opérateur d’adresse pour affecter l’adresse de
letteràchar_ptr - Afficher les adresses stockées dans les deux pointeurs à l’aide de
printfavec le spécificateur de format%p
Votre sortie doit afficher les adresses des pointeurs au format suivant :
Address of number: [address]
Address of letter: [address]Les adresses mémoire réelles varieront d’une exécution à l’autre, mais le format et les libellés doivent correspondre exactement à ceux présentés ci-dessus. [address] est un espace réservé pour l’adresse affichée : n’affichez pas les crochets.
Essayez vous-même
#include <stdio.h>
int main() {
// TODO: Écrivez votre code ici
// 1. Déclarez et initialisez les variables
// 2. Déclarez les pointeurs
// 3. Utilisez l'opérateur d'adresse pour assigner les adresses
// 4. Affichez les adresses en utilisant le format indiqué
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 Logique & Flux
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înesEntraînez-vous par vous-même : Compilateur C en ligne