Déclaration de pointeurs
Fait partie de la section Logique & Flux du Journey C de Coddy. Leçon 2 sur 63.
Maintenant que tu comprends ce que sont les pointeurs, apprenons à les créer. La déclaration d’une variable pointeur suit une syntaxe spécifique qui indique au compilateur vers quel type de données le pointeur pointera.
La syntaxe de base pour déclarer un pointeur est : data_type *pointer_name;
int *ptr; // Déclare un pointeur vers un entier
char *ch_ptr; // Déclare un pointeur vers un caractère
float *f_ptr; // Déclare un pointeur vers un flottantL’astérisque (*) est ce qui transforme cette déclaration en déclaration de pointeur. Il indique au compilateur que cette variable stockera une adresse mémoire, et non la valeur réelle des données. Lorsque vous déclarez int *ptr;, vous dites « ptr est un pointeur qui peut stocker l’adresse d’une variable entière. »
Il est recommandé d’initialiser les pointeurs à NULL s’ils ne pointent pas encore vers une adresse mémoire valide. Cela les empêche de pointer vers des emplacements mémoire aléatoires : int *ptr = NULL;
Lors de l'affichage des adresses de pointer à l'aide de printf, utilisez le spécificateur de format %p. Il est souvent recommandé de caster le pointer en (void *) pour garantir la compatibilité et un formatage correct : printf("%p", (void *)ptr);
Notez que le type de données avant l’astérisque indique vers quel type de données le pointeur pointera. Cela est important, car les différents types de données occupent des quantités différentes d’espace mémoire, et le compilateur doit connaître cette information pour assurer une gestion correcte de la mémoire.
Défi
Facile- Déclarer un pointeur vers un entier nommé
int_ptr, initialisé àNULL - Déclarer un pointeur vers un caractère nommé
char_ptr, initialisé àNULL - Déclarer un pointeur vers un flottant nommé
float_ptr, initialisé àNULL - Afficher les adresses mémoire stockées dans chaque pointeur en utilisant
printfavec le spécificateur de format%p. Lors de l'affichage, castez le pointeur en(void*)pour garantir un formatage correct, par exemple :printf("Label: %p\n", (void*)ptr);
Votre sortie doit afficher les trois adresses de pointeur dans le format suivant :
Integer pointer: [address]
Character pointer: [address]
Float pointer: [address]Notez que les adresses mémoire réelles varieront, mais le format et les étiquettes doivent correspondre exactement à ce qui est indiqué ci-dessus.
Essayez vous-même
#include <stdio.h>
int main() {
// TODO: Déclarez vos pointeurs ici
// TODO: Affichez les adresses des pointeurs en utilisant le format requis
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