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.