Structures de données C++


Les

Les tableaux C/C++ vous permettent de définir des variables qui peuvent stocker des éléments de données du même type, mais les structures sont un autre type de données défini par l'utilisateur disponible en C++ qui vous permet de stocker différents types d’éléments de données. La structure

est utilisée pour représenter un enregistrement. Supposons que vous souhaitiez suivre la dynamique des livres dans la bibliothèque. Vous devrez peut-être suivre les attributs suivants de chaque livre :

  • <. 🎜>Titre

  • Auteur

  • Sujet

  • ID du livre

Définir une structure

Afin de définir une structure, vous devez utiliser l'instruction struct. L'instruction struct définit un nouveau type de données contenant plusieurs membres. Le format de l'instruction struct est le suivant :

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

balise de structure est facultatif et chaque définition de membre est une définition de variable standard. , comme int i; ou float f; ou d'autres définitions de variables valides. A la fin de la définition de la structure, avant le dernier point-virgule, vous pouvez éventuellement spécifier une ou plusieurs variables de structure. Voici comment déclarer une structure Book :

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

Accès aux membres de la structure

Pour accéder aux membres d'une structure, nous utilisons l'opérateur d'accès aux membres (.). L'opérateur d'accès aux membres est un point entre le nom de la variable de structure et le membre de structure auquel nous voulons accéder. Vous pouvez utiliser le mot-clé struct pour définir des variables de type structure. L'exemple suivant démontre l'utilisation de structures :

#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;        // 声明 Book1,类型为 Book
   struct Books Book2;        // 声明 Book2,类型为 Book
 
   // Book1 详述
   strcpy( Book1.title, "Learn C++ Programming");
   strcpy( Book1.author, "Chand Miyan"); 
   strcpy( Book1.subject, "C++ Programming");
   Book1.book_id = 6495407;

   // Book2 详述
   strcpy( Book2.title, "Telecom Billing");
   strcpy( Book2.author, "Yakit Singha");
   strcpy( Book2.subject, "Telecom");
   Book2.book_id = 6495700;
 
   // 输出 Book1 信息
   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;

   // 输出 Book2 信息
   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 les résultats suivants :

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

Structure en tant que paramètre de fonction

Vous Structures peuvent être utilisés comme paramètres de fonction, et la méthode de transmission des paramètres est similaire à d'autres types de variables ou de pointeurs. Vous pouvez accéder aux variables de structure en utilisant la même méthode que dans l'exemple ci-dessus :

#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;        // 声明 Book1,类型为 Book
   struct Books Book2;        // 声明 Book2,类型为 Book
 
   // Book1 详述
   strcpy( Book1.title, "Learn C++ Programming");
   strcpy( Book1.author, "Chand Miyan"); 
   strcpy( Book1.subject, "C++ Programming");
   Book1.book_id = 6495407;

   // Book2 详述
   strcpy( Book2.title, "Telecom Billing");
   strcpy( Book2.author, "Yakit Singha");
   strcpy( Book2.subject, "Telecom");
   Book2.book_id = 6495700;
 
   // 输出 Book1 信息
   printBook( Book1 );

   // 输出 Book2 信息
   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 les résultats suivants :

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

Pointeur vers la structure

Vous pouvez définir un pointeur vers une structure de la même manière que vous définissez un pointeur vers d'autres types de variables, comme indiqué ci-dessous :

struct Books *struct_pointer;

Vous pouvez maintenant stocker l'adresse de la variable de structure dans le pointeur variable définie ci-dessus. Pour trouver l'adresse d'une variable de structure, placez l'opérateur & devant le nom de la structure, comme ceci :

struct_pointer = &Book1;

Afin d'accéder à un membre d'une structure à l'aide d'un pointeur vers la structure, vous devez utiliser le ->, comme indiqué ci-dessous :

struct_pointer->title;

Réécrivons l'exemple ci-dessus en utilisant le pointeur de structure, ce qui vous aidera à comprendre le concept de pointeur de structure :

#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;        // 声明 Book1,类型为 Book
   struct Books Book2;        // 声明 Book2,类型为 Book */
 
   // Book1 详述
   strcpy( Book1.title, "Learn C++ Programming");
   strcpy( Book1.author, "Chand Miyan"); 
   strcpy( Book1.subject, "C++ Programming");
   Book1.book_id = 6495407;

   // Book2 详述
   strcpy( Book2.title, "Telecom Billing");
   strcpy( Book2.author, "Yakit Singha");
   strcpy( Book2.subject, "Telecom");
   Book2.book_id = 6495700;
 
   // 通过传 Book1 的地址来输出 Book1 信息
   printBook( &Book1 );

   // 通过传 Book2 的地址来输出 Book2 信息
   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 Une fois 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

typedef password

Voici une manière plus simple de définir une structure, vous pouvez donner un "alias" au type que vous créez. Par exemple :

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

Maintenant, vous pouvez directement utiliser Books pour définir des variables de type Books sans utiliser le mot-clé struct. Voici un exemple :

Books Book1, Book2;

Vous pouvez utiliser le mot-clé typedef pour définir des types non structurels, comme suit :

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

x, y et z pointent tous vers long entiers Pointeur de type long int.