Latest web development tutorials

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.