Retour au cours

Pointeurs vers des structures (L'opérateur '->')

Langage C : de Zéro à Héros - Le Guide Complet pour Débutants

Leçon 43 : Pointeurs vers des structures (L'opérateur ->)

Les structures sont souvent transmises aux fonctions à l'aide de pointeurs pour économiser de la mémoire et permettre des modifications (Passage par référence).

Déclarer un pointeur vers une structure

c struct Personne { char nom[30]; int age; };

struct Personne p1 = {"Jean", 45}; struct Personne *ptr_p1; // Déclare un pointeur vers une structure Personne

ptr_p1 = &p1; // Assigne l'adresse de p1 au pointeur

Accès aux membres via un pointeur

Il existe deux façons équivalentes d'accéder à un membre de structure via un pointeur :

1. Déréférencement et opérateur point

On déréférence d'abord le pointeur, puis on utilise l'opérateur point.

c (*ptr_p1).age = 46; printf("Age : %d\n", (*ptr_p1).age);

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

Le C propose un raccourci, l'opérateur flèche (->), qui est généralement plus clair et préféré.

c ptr_p1->age = 47; // Équivalent à (*ptr_p1).age = 47 printf("Nom : %s\n", ptr_p1->nom);

Allocation dynamique de structures

Les structures peuvent être allouées sur le tas en utilisant malloc() ou calloc(), ce qui renvoie toujours un pointeur vers la structure.

c struct Personne *nouvelle_p = (struct Personne *) malloc(sizeof(struct Personne));

if (nouvelle_p != NULL) { nouvelle_p->age = 25; // N'oubliez pas de libérer plus tard ! free(nouvelle_p); }