Accéder aux membres d'une Struct
Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 41 sur 63.
Maintenant que vous pouvez créer des variables de type struct, vous devez apprendre à travailler avec les données stockées à l'intérieur de celles-ci. L'opérateur point (.) est votre clé pour accéder aux membres individuels d'une variable struct et les modifier.
La syntaxe pour accéder aux membres d'une structure est simple :
structVariable.memberNameEn utilisant notre exemple de structure Point, vous pouvez à la fois lire ses membres et y écrire :
struct Point p1;
// Écriture dans les membres de la structure
p1.x = 10;
p1.y = 20;
// Lecture des membres de la structure
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);L'opérateur point fonctionne exactement comme l'accès à n'importe quelle autre variable - vous pouvez l'utiliser dans des affectations, des opérations arithmétiques, des appels de fonction ou partout où vous utiliseriez une variable ordinaire de ce type. Chaque membre se comporte comme une variable indépendante de son type déclaré, vous permettant de manipuler les données de la structure de manière organisée et intuitive.
Défi
FacileCréez un programme C qui démontre l'accès et la modification des membres d'une structure à l'aide de l'opérateur point. Votre programme doit :
- Définir une
structnomméeCaravec les membres suivants :- Un entier
yearpour stocker l'année de fabrication - Un tableau de caractères
brandde taille 20 pour stocker la marque de la voiture - Un entier
mileagepour stocker le kilométrage actuel - Un flottant
pricepour stocker le prix de la voiture
- Un entier
- Créer une variable
CarnomméemyCar - Lire les valeurs d'entrée suivantes et les affecter aux membres de la structure à l'aide de l'opérateur point :
- Lire un entier pour l'année et l'affecter à
myCar.year - Lire une chaîne de caractères pour la marque et l'affecter à
myCar.brand - Lire un entier pour le kilométrage et l'affecter à
myCar.mileage - Lire un flottant pour le prix et l'affecter à
myCar.price
- Lire un entier pour l'année et l'affecter à
- Après avoir lu toutes les valeurs, effectuer les opérations suivantes :
- Augmenter le kilométrage de 1000 en utilisant
myCar.mileage += 1000; - Diminuer le prix de 500.0 en utilisant
myCar.price -= 500.0;
- Augmenter le kilométrage de 1000 en utilisant
- Afficher les informations de la voiture en utilisant l'opérateur point pour accéder à chaque membre dans ce format exact :
Car Details:Year: [year]Brand: [brand]Mileage: [mileage]Price: [price]
Ce défi teste votre compréhension de l'opérateur point pour la lecture et l'écriture dans les membres d'une structure. Vous vous entraînerez à affecter des valeurs aux membres d'une structure, à effectuer des opérations arithmétiques sur ceux-ci et à y accéder pour l'affichage.
Par exemple, si l'entrée est :
2020
Toyota
50000
25000.50Votre sortie devrait être :
Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50Aide-mémoire
L'opérateur point (.) est utilisé pour accéder aux membres individuels d'une variable struct et les modifier.
Syntaxe pour accéder aux membres d'une structure :
structVariable.memberNameExemple de lecture et d'écriture dans les membres d'une structure :
struct Point p1;
// Écriture dans les membres de la structure
p1.x = 10;
p1.y = 20;
// Lecture des membres de la structure
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);L'opérateur point peut être utilisé dans des affectations, des opérations arithmétiques, des appels de fonction ou partout où vous utiliseriez une variable ordinaire de ce type. Chaque membre se comporte comme une variable indépendante de son type déclaré.
Essayez vous-même
#include <stdio.h>
#include <string.h>
// TODO: Définir la structure Car ici
int main() {
// TODO: Créer une variable Car nommée myCar
// Lire les valeurs d'entrée
int year;
char brand[20];
int mileage;
float price;
scanf("%d", &year);
scanf("%s", brand);
scanf("%d", &mileage);
scanf("%f", &price);
// TODO: Assigner les valeurs d'entrée aux membres de la structure en utilisant l'opérateur point
// TODO: Modifier le kilométrage et le prix comme spécifié
// TODO: Afficher les détails de la voiture en utilisant l'opérateur point
printf("Car Details:\n");
// Afficher l'année (Year), la marque (Brand), le kilométrage (Mileage) et le prix (Price) ici
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 Logic & Flow
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 étudiant2Pointeurs 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înes