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; es. 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.