Les structures de données de C
C / C ++ vous permet de définir la variable de tableau pour stocker le même type d'éléments de données, mais lastructure est C ++, un autre type de données définis par l' utilisateur disponibles, ce qui vous permet de stocker différents types d'éléments de données.
Structure utilisée pour représenter un dossier, supposons que vous souhaitez suivre des livres de bibliothèque dynamique, vous devrez peut-être garder une trace de chaque livre les propriétés suivantes:
- titre
- auteur
- sujet
- Réserver ID
structure Définition
Afin de définir la structure, vous devez utiliser l'instructionstruct.déclaration de struct définit un nouveau type de données qui contient une pluralité de membres, la déclaration format struct est la suivante:
struct [structure tag] { member definition; member definition; ... member definition; } [one or more structure variables];
lastructure tag est facultative, chaque définition de membre est la définition standard d'une variable, comme int i; ou float f; ou d' autres définitions de variables valides.A la fin de la structure définie, la dernière avant le point-virgule, vous pouvez spécifier une ou plusieurs variables structurelles, ce qui est en option. Voici la structure de déclaration Réservez avant le:
struct Books { char title[50]; char author[50]; char subject[100]; int book_id; }book;
Accès à un membre de la structure
Afin d'accéder à des membres de la structure, nous utilisonsl'opérateur d'accès membre (.).opérateur d'accès membre est une structure de période noms et structures de nos membres variables veulent accéder entre. Vous pouvez définir le type d'une structure variable à l' aidedu mot - clé struct.L'exemple suivant illustre l'utilisation de la structure:
#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 pouvez mettre la structure en tant que paramètre de la fonction, la manière Sénat semblable à d'autres types de variables ou des pointeurs. Vous pouvez utiliser l'exemple ci-dessus le moyen d'accéder à des variables 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 信息 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 une structure
Vous pouvez définir un pointeur sur la structure, la façon dont la définition des liens vers d'autres types de variable pointeur similaires, comme suit:
struct Books *struct_pointer;
Maintenant, vous pouvez répondre à des variables de structure de stockage dans la définition ci-dessus d'une variable de pointeur. Pour trouver l'adresse de la variable de la structure, l'opérateur & devant le nom de la structure, comme suit:
struct_pointer = &Book1;
Pour utiliser le pointeur pour accéder aux points de structure de membre à la structure, vous devez utiliser l'opérateur ->, comme suit:
struct_pointer->title;
Nous allons utiliser le pointeur de la structure pour réécrire l'exemple ci-dessus, il vous aidera à comprendre le concept de la structure des pointeurs:
#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 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
mot-clé typedef
Voici une façon simple de définir la structure, vous pouvez créer le type de prendre un "Alias". Par exemple:
typedef struct { char title[50]; char author[50]; char subject[100]; int book_id; }Books;
Maintenant , vous pouvez utiliser pour définir les variablesLivresLivres types, sans la nécessité d'utiliser le mot - clé struct. Les éléments suivants sont des exemples:
Books Book1, Book2;
Vous pouvez utiliser le mot - clétypedef pour définir le type non-structurel, comme suit:
typedef long int *pint32; pint32 x, y, z;
x, y et z sont pointant vers un entier long long int pointeur.