Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Structures de données C++

Les tableaux C/C++ vous permettent de définir des variables qui combinent plusieurs éléments de données du même type, mais structurés est un autre type de données défini par l'utilisateur qui vous permet de combiner des éléments de données de différents types.

Les structures sont utilisées pour représenter un enregistrement, supposons que vous vouliez garder une trace de vos livres dans une bibliothèque. Vous voudrez peut-être suivre les attributs suivants de chaque livre −

Définir une structure

Pour définir une structure, vous devez utiliser l'instruction struct. L'instruction struct définit un nouveau type de données, avec plusieurs membres, pour votre programme. Le format de l'instruction struct est ceci −

struct [structure tag] {
   member definition;
   member definition;
   ...
   member definition;
} [one or more structure variables];  

La balise de structure est facultatif et chaque définition de membre est une définition de variable normale, telle que int i; ou flottant f ; ou toute autre définition de variable valide. A la fin de la définition de la structure, avant le dernier point-virgule, vous pouvez spécifier une ou plusieurs variables de structure mais c'est facultatif. Voici comment déclarer la structure Book −

struct Books {
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
} book;  

Accéder aux membres de la structure

Pour accéder à n'importe quel membre d'une structure, nous utilisons l'opérateur d'accès aux membres (.) . L'opérateur d'accès au membre est codé comme un point entre le nom de la variable de structure et le membre de structure auquel nous souhaitons accéder. Vous utiliseriez struct mot clé pour définir des variables de type structure. Voici l'exemple pour expliquer l'utilisation de la structure −

Démo en direct
#include <iostream>
#include <cstring>
 
using namespace std;
 
struct Books {
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
};
 
int main() {
   struct Books Book1;        // Declare Book1 of type Book
   struct Books Book2;        // Declare Book2 of type Book
 
   // book 1 specification
   strcpy( Book1.title, "Learn C++ Programming");
   strcpy( Book1.author, "Chand Miyan"); 
   strcpy( Book1.subject, "C++ Programming");
   Book1.book_id = 6495407;

   // book 2 specification
   strcpy( Book2.title, "Telecom Billing");
   strcpy( Book2.author, "Yakit Singha");
   strcpy( Book2.subject, "Telecom");
   Book2.book_id = 6495700;
 
   // Print Book1 info
   cout << "Book 1 title : " << Book1.title <<endl;
   cout << "Book 1 author : " << Book1.author <<endl;
   cout << "Book 1 subject : " << Book1.subject <<endl;
   cout << "Book 1 id : " << Book1.book_id <<endl;

   // Print Book2 info
   cout << "Book 2 title : " << Book2.title <<endl;
   cout << "Book 2 author : " << Book2.author <<endl;
   cout << "Book 2 subject : " << Book2.subject <<endl;
   cout << "Book 2 id : " << Book2.book_id <<endl;

   return 0;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −

Book 1 title : Learn C++ Programming
Book 1 author : Chand Miyan
Book 1 subject : C++ Programming
Book 1 id : 6495407
Book 2 title : Telecom Billing
Book 2 author : Yakit Singha
Book 2 subject : Telecom
Book 2 id : 6495700

Structures en tant qu'arguments de fonction

Vous pouvez passer une structure en tant qu'argument de fonction de la même manière que vous passez n'importe quelle autre variable ou pointeur. Vous accéderez aux variables de structure de la même manière que vous avez accédé dans l'exemple ci-dessus −

Démo en direct
#include <iostream>
#include <cstring>
 
using namespace std;
void printBook( struct Books book );

struct Books {
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
};
 
int main() {
   struct Books Book1;        // Declare Book1 of type Book
   struct Books Book2;        // Declare Book2 of type Book
 
   // book 1 specification
   strcpy( Book1.title, "Learn C++ Programming");
   strcpy( Book1.author, "Chand Miyan"); 
   strcpy( Book1.subject, "C++ Programming");
   Book1.book_id = 6495407;

   // book 2 specification
   strcpy( Book2.title, "Telecom Billing");
   strcpy( Book2.author, "Yakit Singha");
   strcpy( Book2.subject, "Telecom");
   Book2.book_id = 6495700;
 
   // Print Book1 info
   printBook( Book1 );

   // Print Book2 info
   printBook( Book2 );

   return 0;
}
void printBook( struct Books book ) {
   cout << "Book title : " << book.title <<endl;
   cout << "Book author : " << book.author <<endl;
   cout << "Book subject : " << book.subject <<endl;
   cout << "Book id : " << book.book_id <<endl;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −

Book title : Learn C++ Programming
Book author : Chand Miyan
Book subject : C++ Programming
Book id : 6495407
Book title : Telecom Billing
Book author : Yakit Singha
Book subject : Telecom
Book id : 6495700

Pointeurs vers des structures

Vous pouvez définir des pointeurs vers des structures de la même manière que vous définissez un pointeur vers toute autre variable comme suit −

struct Books *struct_pointer;

Maintenant, vous pouvez stocker l'adresse d'une variable de structure dans la variable de pointeur définie ci-dessus. Pour trouver l'adresse d'une variable de structure, placez l'opérateur &avant le nom de la structure comme suit −

struct_pointer = &Book1;

Pour accéder aux membres d'une structure à l'aide d'un pointeur vers cette structure, vous devez utiliser l'opérateur -> comme suit −

struct_pointer->title;

Réécrivons l'exemple ci-dessus en utilisant le pointeur de structure, espérons que ce sera facile pour vous de comprendre le concept −

Démo en direct
#include <iostream>
#include <cstring>
 
using namespace std;
void printBook( struct Books *book );

struct Books {
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
};
int main() {
   struct Books Book1;        // Declare Book1 of type Book
   struct Books Book2;        // Declare Book2 of type Book
 
   // Book 1 specification
   strcpy( Book1.title, "Learn C++ Programming");
   strcpy( Book1.author, "Chand Miyan"); 
   strcpy( Book1.subject, "C++ Programming");
   Book1.book_id = 6495407;

   // Book 2 specification
   strcpy( Book2.title, "Telecom Billing");
   strcpy( Book2.author, "Yakit Singha");
   strcpy( Book2.subject, "Telecom");
   Book2.book_id = 6495700;
 
   // Print Book1 info, passing address of structure
   printBook( &Book1 );

   // Print Book1 info, passing address of structure
   printBook( &Book2 );

   return 0;
}

// This function accept pointer to structure as parameter.
void printBook( struct Books *book ) {
   cout << "Book title : " << book->title <<endl;
   cout << "Book author : " << book->author <<endl;
   cout << "Book subject : " << book->subject <<endl;
   cout << "Book id : " << book->book_id <<endl;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −

Book title : Learn C++ Programming
Book author : Chand Miyan
Book subject : C++ Programming
Book id : 6495407
Book title : Telecom Billing
Book author : Yakit Singha
Book subject : Telecom
Book id : 6495700

Le mot clé typedef

Il existe un moyen plus simple de définir des structures ou vous pouvez "aliaser" les types que vous créez. Par exemple −

typedef struct {
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
} Books;

Vous pouvez désormais utiliser Livres directement pour définir les variables de Livres tapez sans utiliser le mot-clé struct. Voici l'exemple −

Books Book1, Book2;

Vous pouvez utiliser typedef mot-clé pour les non-structures ainsi que suit −

typedef long int *pint32;
 
pint32 x, y, z;

x, y et z sont tous des pointeurs vers des entiers longs.


Langue C

  1. Types de données C++
  2. Opérateurs C++
  3. Commentaires C++
  4. Type de données Char C++ avec exemples
  5. Technologie de stockage de données magnétiques de nouvelle génération
  6. Java - Structures de données
  7. C- Ouvrages
  8. C - typedef
  9. Structures de données C++