L'opérateur d'adresse (&)
Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 3 sur 63.
Maintenant que vous savez déclarer des pointeurs, vous devez apprendre comment y stocker réellement 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 un nom de variable, il renvoie l'adresse mémoire où cette variable est stockée. Considérez cela comme si vous demandiez « 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 assignons ensuite cette adresse à notre pointeur ptr. Maintenant, ptr « pointe vers » la variable age.
L'opérateur d'adresse est essentiel car il constitue le pont entre les variables régulières 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 assigner l'adresse d'un entier qu'à un pointeur déclaré pour des entiers.
Défi
FacileÉcrivez un programme C qui démontre l'utilisation de l'opérateur d'adresse pour connecter des variables avec des pointeurs. Votre programme doit :
- Déclarer une variable entière nommée
numberet l'initialiser avec la valeur 42 - Déclarer une variable de type 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 assigner l'adresse de
numberànum_ptr - Utiliser l'opérateur d'adresse pour assigner l'adresse de
letteràchar_ptr - Afficher les adresses stockées dans les deux pointeurs en utilisant
printfavec le spécificateur de format%p
Votre sortie doit afficher les adresses des pointeurs dans le format suivant :
Address of number: [address]
Address of letter: [address]Les adresses mémoire réelles varieront entre les exécutions du programme, mais le format et les étiquettes doivent correspondre exactement à ce qui est indiqué ci-dessus.
Aide-mémoire
L'opérateur d'adresse (&) retourne l'adresse mémoire d'une variable :
int age = 25;
int *ptr;
ptr = &age; // Stocke l'adresse de 'age' dans 'ptr'L'opérateur d'adresse est essentiel pour connecter des variables avec des pointeurs. Les types de données doivent correspondre - vous ne pouvez assigner l'adresse d'un entier qu'à un pointeur déclaré pour des entiers.
Utilisez le spécificateur de format %p pour afficher les adresses de pointeurs avec printf.
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. Utiliser l'opérateur d'adresse pour assigner les adresses
// 4. Imprimer 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 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