Latest web development tutorials

estructuras de datos C ++

C / C ++ permite definir la variable de matriz para almacenar el mismo tipo de elementos de datos, pero laestructura es C ++, otros tipos de datos definidos por el usuario disponibles, lo que le permite almacenar diferentes tipos de elementos de datos.

Estructura utiliza para representar un registro, supongamos que desea realizar un seguimiento dinámico de libros de la biblioteca, es posible que necesite para realizar un seguimiento de cada libro las siguientes propiedades:

  • título
  • autor
  • sujeto
  • Identificación libro

estructura de definición

Con el fin de definir la estructura, se debe utilizar la instrucciónestructura.declaración struct define un nuevo tipo de datos que contiene una pluralidad de miembros, la instrucción de formato de estructura es la siguiente:

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

variable de estructura es opcional, cada miembro de la definición es la definición estándar de una variable, como int i; o flotar f; u otras definiciones de variables válidos.Al final de la estructura definida, la última antes del punto y coma, puede especificar una o más variables estructurales, que es opcional. Aquí está la estructura declaración libro por:

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

El acceso a la estructura de miembro de

Con el fin de acceder a los miembros de la estructura, se utilizael operador de acceso a miembro (.).operador de acceso de miembros es una estructura período de nombres y estructuras de nuestros miembros variables quieren acceder el medio. Se puede definir el tipo de una estructura variable usandola palabra clave struct.El siguiente ejemplo demuestra el uso de la estructura:

#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;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

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

Estructura como un parámetro de la función

Usted puede poner la estructura como un parámetro de la función, la forma Senado similar a otros tipos de variables o punteros. Puede utilizar el ejemplo anterior, la forma de acceder a variables de estructura:

#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;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

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

Puntero a una estructura

Se puede definir un puntero a la estructura, la forma en la definición de enlaces a otros tipos similares de variable de puntero, de la siguiente manera:

struct Books *struct_pointer;

Ahora se puede abordar variables de estructura de almacenamiento en la definición anterior de una variable puntero. Para encontrar la dirección de la variable de estructura, el operador & delante del nombre de la estructura, como sigue:

struct_pointer = &Book1;

Para utilizar el puntero para acceder a los puntos de estructura de miembro de la estructura, se debe utilizar el operador ->, de la siguiente manera:

struct_pointer->title;

Vamos a usar el puntero estructura de reescribir el ejemplo anterior, que le ayudará a entender el concepto de punteros estructura:

#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;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

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

palabra clave typedef

Aquí está una manera más sencilla de definir la estructura, se puede crear el tipo de tomar un "Alias". Por ejemplo:

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

Ahora se puede utilizar para definir las variables de tiposLibrosLibros, sin la necesidad de utilizar la palabra clave struct. Los siguientes son ejemplos:

Books Book1, Book2;

Se puede utilizar la palabra clavetypedef para definir el tipo no estructural, de la siguiente manera:

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

x, y, z están apuntando a un entero largo puntero long int.