logo

Structures en C++

Nous nous trouvons souvent dans des situations où nous devons stocker un groupe de données, qu'elles soient de types de données similaires ou de types de données non similaires. Nous avons vu des tableaux en C++ qui sont utilisés pour stocker un ensemble de données de types de données similaires dans des emplacements de mémoire contigus.
Contrairement aux tableaux, Structures en C++ sont des types de données définis par l'utilisateur qui sont utilisés pour stocker un groupe d'éléments de types de données non similaires.

Qu'est-ce qu'une structure ?



Une structure est un type de données défini par l'utilisateur en C/C++. Une structure crée un type de données qui peut être utilisé pour regrouper des éléments de types éventuellement différents en un seul type.

Structures en C++

Comment créer une structure ?



Le mot-clé 'struct' est utilisé pour créer une structure. La syntaxe générale pour créer une structure est la suivante :

struct structureName{ member1; member2; member3; . . . memberN; };>

Les structures en C++ peuvent contenir deux types de membres :

    Data Member : ces membres sont des variables C++ normales. Nous pouvons créer une structure avec des variables de différents types de données en C++. Fonctions membres : ces membres sont des fonctions C++ normales. Outre les variables, nous pouvons également inclure des fonctions dans une déclaration de structure.

Exemple :



topologie en étoile

C++




// Data Members> int> roll;> int> age;> int> marks;> > // Member Functions> void> printDetails()> {> >cout<<>'Roll = '><' '; cout<<'Age = '< ' '; cout<<'Marks = '< }>

>

>

Dans la structure ci-dessus, les données membres sont trois variables entières à stocker numéro de matricule, âge et notes de tout étudiant et la fonction de membre est printDetails() qui imprime tous les détails ci-dessus de tout étudiant.

Comment déclarer des variables de structure ?

Une variable de structure peut être déclarée avec une déclaration de structure ou sous forme de déclaration distincte comme les types de base.

C++




// A variable declaration with structure declaration.> struct> Point> {> >int> x, y;> } p1;>// The variable p1 is declared with 'Point'> // A variable declaration like basic data types> struct> Point> {> >int> x, y;> };> int> main()> {> >struct> Point p1;>// The variable p1 is declared like a normal variable> }>

>

>

Remarque : En C++, le mot-clé struct est facultatif avant la déclaration d'une variable. En C, c'est obligatoire.

Comment initialiser les membres de la structure ?
Membres de la structure c'est pas possible initialisé avec déclaration. Par exemple, le programme C suivant échoue lors de la compilation.
Mais est considéré comme correct en C++ 11 et supérieur.

C++




struct> Point> {> >int> x = 0;>// COMPILER ERROR: cannot initialize members here> >int> y = 0;>// COMPILER ERROR: cannot initialize members here> };>

>

>

La raison de l'erreur ci-dessus est simple : lorsqu'un type de données est déclaré, aucune mémoire ne lui est allouée. La mémoire est allouée uniquement lorsque les variables sont créées.

Les membres de la structure peuvent être initialisés avec une déclaration en C++. Par exemple, le programme C++ suivant s'exécute avec succès sans générer d'erreur.

C++




// In C++ We can Initialize the Variables with Declaration in Structure.> #include> using> namespace> std;> struct> Point {> >int> x = 0;>// It is Considered as Default Arguments and no Error is Raised> >int> y = 1;> };> int> main()> {> >struct> Point p1;> >// Accessing members of point p1> >// No value is Initialized then the default value is considered. ie x=0 and y=1;> >cout <<>'x = '> << p1.x <<>', y = '> << p1.y< // Initializing the value of y = 20; p1.y = 20; cout << 'x = ' << p1.x << ', y = ' << p1.y; return 0; } // This code is contributed by Samyak Jain>

>

>

 x=0, y=1 x=0, y=20>

Les membres de la structure peuvent être initialisés à l’aide d’accolades « {} ». Par exemple, ce qui suit est une initialisation valide.

C++




Terminal Linux Kali
struct> Point {> >int> x, y;> };> int> main()> {> >// A valid initialization. member x gets value 0 and y> >// gets value 1. The order of declaration is followed.> >struct> Point p1 = { 0, 1 };> }>

>

>


Comment accéder aux éléments de structure ?
Les membres de la structure sont accessibles à l’aide de l’opérateur point (.).

C++




#include> using> namespace> std;> struct> Point {> >int> x, y;> };> int> main()> {> >struct> Point p1 = { 0, 1 };> >// Accessing members of point p1> >p1.x = 20;> >cout <<>'x = '> << p1.x <<>', y = '> << p1.y;> >return> 0;> }>

>

>

Sortir

x = 20, y = 1>

Qu'est-ce qu'un ensemble de structures ?

Comme d’autres types de données primitifs, nous pouvons créer un tableau de structures.

C++




#include> using> namespace> std;> struct> Point {> >int> x, y;> };> int> main()> {> >// Create an array of structures> >struct> Point arr[10];> >// Access array members> >arr[0].x = 10;> >arr[0].y = 20;> >cout << arr[0].x <<>' '> << arr[0].y;> >return> 0;> }>

>

mission impossible tous les films

>

Sortir

10 20>


Qu'est-ce qu'un pointeur de structure ?
Comme les types primitifs, nous pouvons avoir un pointeur vers une structure. Si nous avons un pointeur vers la structure, les membres sont accessibles à l'aide de l'opérateur flèche ( -> ) au lieu de l'opérateur point (.).

C++




#include> using> namespace> std;> struct> Point {> >int> x, y;> };> int> main()> {> >struct> Point p1 = { 1, 2 };> >// p2 is a pointer to structure p1> >struct> Point* p2 = &p1;> >// Accessing structure members using> >// structure pointer> >cout ' ' return 0; }>

>

>

Sortir

1 2>

Qu’est-ce que l’alignement des membres de la structure ?
Voir En savoir plus sur les différences entre les structures et les classes en C++ .