Initialiser des Structs
Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 42 sur 63.
Bien que vous puissiez créer des variables de type struct puis affecter des valeurs à leurs membres individuellement, le langage C fournit un moyen plus pratique de définir des valeurs initiales. Vous pouvez initialiser une variable struct au moment de la déclaration en utilisant une liste d'initialisation entourée d'accolades.
La syntaxe pour l'initialisation d'une structure est :
struct StructureName variableName = {value1, value2, ...};En utilisant notre exemple de structure Point, vous pouvez la déclarer et l'initialiser en une seule ligne propre :
struct Point p1 = {10, 20};Cela crée une variable Point nommée p1 avec x défini sur 10 et y défini sur 20. Les valeurs de la liste d'initialisation sont affectées aux membres de la structure dans l'ordre dans lequel ils ont été déclarés dans la définition de la structure.
Cette approche d'initialisation est non seulement plus concise que des affectations séparées, mais elle garantit également que votre struct commence avec des valeurs significatives plutôt que des données résiduelles aléatoires. Elle est particulièrement utile lorsque vous connaissez les valeurs initiales au moment de la compilation et que vous souhaitez créer efficacement des variables de type struct prêtes à l'emploi.
Défi
FacileCréez un programme en C qui démontre l'initialisation de structures à l'aide de listes d'initialisation. Votre programme doit :
- Définir une
structnomméeEmployeeavec les membres suivants :- Un entier
idpour stocker l'ID de l'employé - Un tableau de caractères
departmentde taille 15 pour stocker le nom du département - Un entier
yearsOfServicepour stocker les années de service - Un flottant
salarypour stocker le salaire de l'employé
- Un entier
- Créer trois variables
Employeeen utilisant des listes d'initialisation avec les données suivantes :emp1: ID 101, département "Engineering", 5 ans de service, salaire 75000.50emp2: ID 102, département "Marketing", 3 ans de service, salaire 65000.25emp3: ID 103, département "Sales", 8 ans de service, salaire 80000.75
- Afficher les informations de chaque employé dans ce format exact :
Employee 1:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]Employee 2:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]Employee 3:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]
- Calculer et afficher le salaire total des trois employés au format :
Total Salary: [total] - Calculer et afficher la moyenne des années de service au format :
Average Years of Service: [average]
Ce défi teste votre compréhension de l'initialisation des structures à l'aide de listes d'initialisation, où vous déclarez et initialisez des variables de structure sur une seule ligne. Les valeurs de la liste d'initialisation doivent être fournies dans le même ordre que celui dans lequel les membres ont été déclarés dans la définition de la structure.
Votre sortie attendue doit être :
Employee 1:
ID: 101
Department: Engineering
Years of Service: 5
Salary: 75000.50
Employee 2:
ID: 102
Department: Marketing
Years of Service: 3
Salary: 65000.25
Employee 3:
ID: 103
Department: Sales
Years of Service: 8
Salary: 80000.75
Total Salary: 220001.50
Average Years of Service: 5.33Aide-mémoire
Vous pouvez initialiser une variable de structure au moment de la déclaration en utilisant une liste d'initialisation entourée d'accolades :
struct StructureName variableName = {value1, value2, ...};Exemple avec une structure Point :
struct Point p1 = {10, 20};Les valeurs de la liste d'initialisation sont affectées aux membres de la structure dans l'ordre où ils ont été déclarés dans la définition de la structure. Cette approche est plus concise que des affectations séparées et garantit que votre structure commence avec des valeurs significatives plutôt qu'avec des données résiduelles aléatoires.
Essayez vous-même
#include <stdio.h>
// TODO: Définir la structure Employee ici
int main() {
// TODO: Créer trois variables Employee en utilisant des listes d'initialisation
// TODO: Afficher les informations pour chaque employé
// TODO: Calculer et afficher le salaire total et la moyenne des années de service
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