Édition pédagogique en français
Structures, typedef et opérateur -> en C
Regroupez les données liées et distinguez accès par objet et par pointeur.

struct définit plusieurs champs. Le point accède au champ d’un objet ; -> y accède par un pointeur valide. typedef crée un autre nom de type, sans allouer de mémoire à lui seul.
Un tableau de structures stocke des enregistrements consécutifs. Initialisez les champs lus et respectez les buffers de caractères. Copier une structure copie ses champs, mais un champ pointeur désigne toujours le même objet.
Le compilateur peut insérer du remplissage pour l’alignement : sizeof peut dépasser la somme des champs. Ne considérez pas la représentation brute comme un format de fichier portable.
Code source
#include <stdio.h>
#include <string.h>
// Typedef struct definition
typedef struct {
int id;
char name[32];
float gpa;
int credits;
} Student;
// Function taking pointer to struct (arrow operator ->)
void print_student(const Student *s) {
printf("ID: %-4d | Name: %-15s | GPA: %.2f | Credits: %d\n",
s->id, s->name, s->gpa, s->credits);
}
// Mutate struct via pointer
void update_gpa(Student *s, float new_gpa) {
s->gpa = new_gpa;
}
int main(void) {
// Array of structs
Student roster[] = {
{101, "Alice Chen", 3.92f, 48},
{102, "Bob Smith", 3.65f, 32},
{103, "Charlie Davis", 3.88f, 60}
};
int total = sizeof(roster) / sizeof(roster[0]);
printf("--- Engineering Class Roster ---\n");
for (int i = 0; i < total; i++) {
print_student(&roster[i]);
}
printf("\n--- Updating Bob's GPA via Pointer (Arrow ->) ---\n");
update_gpa(&roster[1], 3.82f);
print_student(&roster[1]);
return 0;
}Ouvrir dans le compilateurRésultat attendu
--- Engineering Class Roster --- ID: 101 | Name: Alice Chen | GPA: 3.92 | Credits: 48 ID: 102 | Name: Bob Smith | GPA: 3.65 | Credits: 32 ID: 103 | Name: Charlie Davis | GPA: 3.88 | Credits: 60 --- Updating Bob's GPA via Pointer (Arrow ->) --- ID: 102 | Name: Bob Smith | GPA: 3.82 | Credits: 32
Questions fréquentes
Pourquoi le code et certains résultats restent-ils en anglais ?
Les mots-clés C, les identifiants, les commentaires du programme et les sorties attendues restent ceux de la version originale pour conserver un code exécutable et des tests cohérents. Les explications et les consignes sont traduites.