Menu
Coddy logo textTech

L'opérateur flèche (->)

Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 45 sur 63.

Lorsque vous travaillez avec des pointeurs vers des structures, l'accès aux membres de la structure nécessite une syntaxe spéciale. Bien que vous puissiez utiliser l'opérateur de déréférencement et la notation par point ensemble, le langage C fournit un opérateur plus pratique spécifiquement à cet effet : l'opérateur flèche (->).

L'opérateur flèche vous permet d'accéder aux membres d'une structure via un pointeur de manière propre et lisible :

ptr->member

Ceci est équivalent à écrire (*ptr).member, mais de manière beaucoup plus concise.

Voici comment cela fonctionne en pratique :

struct Point p1 = {10, 20};
struct Point *ptr = &p1;

// Utilisation de l'opérateur flèche
printf("x = %d, y = %d\n", ptr->x, ptr->y);

// C'est la même chose que :
printf("x = %d, y = %d\n", (*ptr).x, (*ptr).y);

L'opérateur flèche rend votre code plus propre et plus facile à lire, particulièrement lors de la manipulation de structures de données complexes. C'est la méthode standard pour accéder aux membres d'une struct via des pointeurs en programmation C.

challenge icon

Défi

Facile

Créez un programme C qui démontre l'utilisation de l'opérateur flèche pour accéder aux membres d'une structure via des pointeurs. Votre programme doit :

  1. Définir une struct nommée Book avec les membres suivants :
    • Un entier id pour stocker l'identifiant du livre
    • Un tableau de caractères title de taille 40 pour stocker le titre du livre
    • Un tableau de caractères author de taille 30 pour stocker le nom de l'auteur
    • Un flottant price pour stocker le prix du livre
    • Un entier pages pour stocker le nombre de pages
  2. Dans la fonction principale, créer une variable Book nommée myBook
  3. Déclarer un pointeur vers une structure Book nommé bookPtr
  4. Assigner l'adresse de myBook à bookPtr
  5. Lire les valeurs d'entrée suivantes et les assigner aux membres de la structure en utilisant l'opérateur flèche via le pointeur :
    • Lire un entier pour l'ID et l'assigner en utilisant bookPtr->id
    • Lire une chaîne pour le titre et l'assigner en utilisant bookPtr->title
    • Lire une chaîne pour l'auteur et l'assigner en utilisant bookPtr->author
    • Lire un flottant pour le prix et l'assigner en utilisant bookPtr->price
    • Lire un entier pour les pages et l'assigner en utilisant bookPtr->pages
  6. Après avoir lu toutes les valeurs, effectuer les opérations suivantes en utilisant l'opérateur flèche :
    • Appliquer une remise de 10 % au prix : bookPtr->price = bookPtr->price * 0.9;
    • Ajouter 50 pages bonus : bookPtr->pages += 50;
  7. Afficher les informations du livre en utilisant l'opérateur flèche pour accéder à chaque membre dans ce format exact :
    • Book Information:
    • ID: [id]
    • Title: [title]
    • Author: [author]
    • Price: [price]
    • Pages: [pages]
  8. Calculer et afficher le prix par page en utilisant l'opérateur flèche au format : Price per page: [price_per_page]

Ce défi teste votre compréhension de l'opérateur flèche pour accéder aux membres d'une structure via des pointeurs. Vous vous entraînerez à utiliser la syntaxe ptr->member pour lire et écrire dans les membres d'une structure, démontrant qu'elle est équivalente à (*ptr).member mais beaucoup plus pratique et lisible.

Aide-mémoire

L'opérateur flèche (->) fournit un moyen pratique d'accéder aux membres d'une structure via un pointeur :

ptr->member

Ceci est équivalent à (*ptr).member mais plus concis et lisible.

Exemple d'utilisation :

struct Point p1 = {10, 20};
struct Point *ptr = &p1;

// Utilisation de l'opérateur flèche
printf("x = %d, y = %d\n", ptr->x, ptr->y);

// C'est la même chose que :
printf("x = %d, y = %d\n", (*ptr).x, (*ptr).y);

Essayez vous-même

#include <stdio.h>
#include <string.h>

// TODO: Définir la structure Book ici

int main() {
    // TODO: Créer une variable Book nommée myBook
    
    // TODO: Déclarer un pointeur vers Book nommé bookPtr
    
    // TODO: Assigner l'adresse de myBook à bookPtr
    
    // Lire les valeurs d'entrée
    int id;
    char title[40];
    char author[30];
    float price;
    int pages;
    
    scanf("%d", &id);
    scanf("%s", title);
    scanf("%s", author);
    scanf("%f", &price);
    scanf("%d", &pages);
    
    // TODO: Assigner les valeurs d'entrée aux membres de la structure en utilisant l'opérateur flèche
    
    // TODO: Appliquer une remise de 10% au prix en utilisant l'opérateur flèche
    
    // TODO: Ajouter 50 pages bonus en utilisant l'opérateur flèche
    
    // TODO: Afficher les informations du livre en utilisant l'opérateur flèche
    
    // TODO: Calculer et afficher le prix par page en utilisant l'opérateur flèche
    
    return 0;
}
quiz iconTestez-vous

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