Menu
Coddy logo textTech

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

Fait partie de la section Logique & Flux 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 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 l'utilisation 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 montre comment utiliser 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 nombre 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. Affecter l’adresse de myBook à bookPtr
  5. Lire les valeurs d’entrée suivantes et les affecter aux membres de la structure à l’aide de l’opérateur flèche via le pointeur :
    • Lire un entier pour l’identifiant et l’affecter à l’aide de bookPtr->id
    • Lire une chaîne pour le titre et l’affecter à l’aide de bookPtr->title
    • Lire une chaîne pour l’auteur et l’affecter à l’aide de bookPtr->author
    • Lire un nombre flottant pour le prix et l’affecter à l’aide de bookPtr->price
    • Lire un entier pour le nombre de pages et l’affecter à l’aide de bookPtr->pages
  6. Après avoir lu toutes les valeurs, effectuer les opérations suivantes à l’aide de 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 à l’aide de l’opérateur flèche au format suivant : Price per page: [price_per_page]

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

Essayez vous-même

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

// TODO: Définir la struct 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 struct en utilisant l'opérateur flèche
    
    // TODO: Appliquer une remise de 10% au price 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 Logique & Flux

Entraînez-vous par vous-même : Compilateur C en ligne