typedef avec les structures
Fait partie de la section Logique & Flux du Journey C de Coddy. Leçon 59 sur 63.
L’une des applications les plus pratiques de typedef consiste à créer des alias pour les types struct. Cela évite de devoir écrire à répétition le mot-clé struct chaque fois que vous déclarez une variable de ce type, ce qui rend votre code plus propre et plus lisible.
Lorsque vous combinez typedef avec une définition de structure, vous pouvez créer un nouveau nom de type qui fait directement référence à la structure. Voici la syntaxe :
typedef struct Point {
int x;
int y;
} Point;Maintenant, au lieu d’écrire struct Point p1; chaque fois que vous avez besoin d’une variable Point, vous pouvez simplement écrire Point p1;. Les deux déclarations accomplissent exactement la même chose, mais la version avec typedef est plus concise et plus facile à lire.
Cette approche est particulièrement utile dans les programmes plus volumineux où vous travaillez fréquemment avec des types de données personnalisés. Elle donne à votre code une apparence plus proche de celle d’autres langages de programmation et réduit l’encombrement visuel lié à la saisie répétée de struct dans votre programme.
Défi
FacileCréez un programme C qui montre comment utiliser typedef avec des structures pour créer un système simple d’inventaire de livres. Votre programme doit :
- Définir une
structnomméeBookavec les membres suivants :- Un entier
id - Un tableau de caractères
titlede taille 50 - Un flottant
price - Un entier
quantity
- Un entier
- Utiliser
typedefpour créer un alias de type nomméBookpour lastruct Book - Dans la fonction main :
- Déclarer deux variables de type
Booknomméesbook1etbook2 - Lire les données du premier livre dans cet ordre : ID, titre, prix, quantité
- Attribuer ces valeurs aux membres de
book1 - Lire les données du deuxième livre dans cet ordre : ID, titre, prix, quantité
- Attribuer ces valeurs aux membres de
book2 - Afficher les informations des deux livres dans ce format exact :
Book 1: ID=[id], Title=[title], Price=[price], Quantity=[quantity]Book 2: ID=[id], Title=[title], Price=[price], Quantity=[quantity]
- Calculer et afficher la valeur totale de l’inventaire de chaque livre (prix × quantité) dans ce format exact :
Book 1 Total Value: [total_value]Book 2 Total Value: [total_value]
- Calculer et afficher la valeur combinée de l’inventaire des deux livres dans ce format exact :
Combined Inventory Value: [combined_value] - Déterminer et afficher quel livre a la valeur totale la plus élevée :
- Si la valeur totale de book1 est la plus élevée : afficher
Book 1 has higher value - Si la valeur totale de book2 est la plus élevée : afficher
Book 2 has higher value - Si les deux ont la même valeur : afficher
Both books have equal value
- Si la valeur totale de book1 est la plus élevée : afficher
- Déclarer deux variables de type
Ce défi montre comment typedef avec les structures évite d’avoir à réécrire struct Book à plusieurs reprises dans votre programme. Au lieu de déclarer des variables comme struct Book book1;, vous pouvez simplement écrire Book book1;, ce qui rend votre code plus clair et plus lisible. Vous vous exercerez à combiner la définition d’une structure avec typedef, à travailler avec les membres d’une structure et à effectuer des calculs à l’aide de données de structure.
Essayez vous-même
#include <stdio.h>
#include <string.h>
// TODO: Définissez votre struct et typedef ici
int main() {
// TODO: Déclarez vos variables Book ici
// Lire l'entrée pour le premier livre
int id1, quantity1;
char title1[50];
float price1;
scanf("%d", &id1);
scanf("%s", title1);
scanf("%f", &price1);
scanf("%d", &quantity1);
// TODO: Assignez les valeurs aux membres de book1
// Lire l'entrée pour le second livre
int id2, quantity2;
char title2[50];
float price2;
scanf("%d", &id2);
scanf("%s", title2);
scanf("%f", &price2);
scanf("%d", &quantity2);
// TODO: Assignez les valeurs aux membres de book2
// TODO: Affichez les informations du livre, calculez les valeurs et comparez
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ères7Structures (structs)
Qu'est-ce qu'une Struct ?Déclarer une StructCréer des variables de type StructAccéder aux membres d'une StructInitialiser des StructsRécapitulatif : Struct de données étudiant10Énumérations et typedef
enum pour les constantes nomméesDéclarer et utiliser des énumérationsLes énumérations dans les instructions switchUtiliser typedef pour les alias de typestypedef avec les structuresRécapitulatif : Pratique de typedef et enum2Pointeurs 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