Estructura y estructura de datos

Estructura de datos C ++

Las matrices C / C ++ le permiten definir variables que pueden almacenar elementos de datos del mismo tipo, pero la estructura es otro tipo de datos disponible definido por el usuario en C ++, que le permite almacenar elementos de datos de diferentes tipos.

La estructura se utiliza para representar un registro. Si desea rastrear la dinámica de los libros en la biblioteca, es posible que deba rastrear los siguientes atributos de cada libro:

  • Título: Título
  • Autor: Autor
  • Asunto: categoría
  • ID de libro: ID de libro

Definir estructura

Para definir la estructura, debe utilizar la   instrucción struct . La instrucción struct define un nuevo tipo de datos que contiene varios miembros. El formato de la instrucción struct es el siguiente:

struct type_name {
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
.
.
} object_names;

type_name  es el nombre del tipo de estructura;

member_type1 member_name1  es una definición de variable estándar;

Como  int i;  o  float f;  u otras definiciones de variables válidas.

Al final de la definición de la estructura, antes del último punto y coma, puede especificar una o más variables de estructura, lo cual es opcional.

Lo siguiente es declarar una estructura tipo  Books , la variable es  book :

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

Miembro de la estructura de acceso

Para acceder a los miembros de la estructura, usamos el operador de acceso de miembros (.) .

El operador de acceso a miembros es un período entre el nombre de la variable de estructura y el miembro de estructura al que queremos acceder.

El siguiente ejemplo demuestra el uso de la estructura:

#include <iostream>
#include <cstring>
 
using namespace std;
 
// 声明一个结构体类型 Books
struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
};
 
int main( )
{
   Books Book1;        // 定义结构体类型 Books 的变量 Book1
   Books Book2;        // 定义结构体类型 Books 的变量 Book2
 
   // Book1 详述
   strcpy( Book1.title, "C++ 教程");
   strcpy( Book1.author, "Nowcoder");
   strcpy( Book1.subject, "编程语言");
   Book1.book_id = 12345;
 
   // Book2 详述
   strcpy( Book2.title, "CSS 教程");
   strcpy( Book2.author, "Nowcoder");
   strcpy( Book2.subject, "前端技术");
   Book2.book_id = 12346;
 
   // 输出 Book1 信息
   cout << "第一本书标题 : " << Book1.title <<endl;
   cout << "第一本书作者 : " << Book1.author <<endl;
   cout << "第一本书类目 : " << Book1.subject <<endl;
   cout << "第一本书 ID : " << Book1.book_id <<endl;
 
   // 输出 Book2 信息
   cout << "第二本书标题 : " << Book2.title <<endl;
   cout << "第二本书作者 : " << Book2.author <<endl;
   cout << "第二本书类目 : " << Book2.subject <<endl;
   cout << "第二本书 ID : " << Book2.book_id <<endl;
 
   return 0;
}

El ejemplo define una estructura similar a Books y sus dos variables Book1 y Book2. Cuando el código anterior se compila y ejecuta, producirá los siguientes resultados:

第一本书标题 : C++ 教程
第一本书作者 : Nowcoder
第一本书类目 : 编程语言
第一本书 ID : 12345
第二本书标题 : CSS 教程
第二本书作者 : Nowcoder
第二本书类目 : 前端技术
第二本书 ID : 12346

Estructura como parámetro de función

La estructura se puede utilizar como un parámetro de función y el método de paso de parámetros es similar a otros tipos de variables o punteros.

Puede utilizar el método del ejemplo anterior para acceder a las variables de estructura:

#include <iostream>
#include <cstring>
 
using namespace std;
void printBook( struct Books book );
 
// 声明一个结构体类型 Books
struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
};
 
int main( )
{
   Books Book1;        // 定义结构体类型 Books 的变量 Book1
   Books Book2;        // 定义结构体类型 Books 的变量 Book2
 
    // Book1 详述
   strcpy( Book1.title, "C++ 教程");
   strcpy( Book1.author, "Nowcoder");
   strcpy( Book1.subject, "编程语言");
   Book1.book_id = 12345;
 
   // Book2 详述
   strcpy( Book2.title, "CSS 教程");
   strcpy( Book2.author, "Nowcoder");
   strcpy( Book2.subject, "前端技术");
   Book2.book_id = 12346;
 
   // 输出 Book1 信息
   printBook( Book1 );
 
   // 输出 Book2 信息
   printBook( Book2 );
 
   return 0;
}
void printBook( struct Books book )
{
   cout << "书标题 : " << book.title <<endl;
   cout << "书作者 : " << book.author <<endl;
   cout << "书类目 : " << book.subject <<endl;
   cout << "书 ID : " << book.book_id <<endl;
}

Cuando el código anterior se compila y ejecuta, producirá los siguientes resultados:

书标题 : C++ 教程
书作者 : Nowcoder
书类目 : 编程语言
书 ID : 12345
书标题 : CSS 教程
书作者 : Nowcoder
书类目 : 前端技术
书 ID : 12346

Puntero a la estructura

Puede definir punteros a estructuras de manera similar a definir punteros a otros tipos de variables, de la siguiente manera:

struct Books *struct_pointer;

Ahora puede almacenar la dirección de la variable de estructura en la variable de puntero definida anteriormente. Para encontrar la dirección de una variable de estructura, coloque el operador & delante del nombre de la estructura, como se muestra a continuación:

struct_pointer = &Book1;

Para usar un puntero a la estructura para acceder a los miembros de la estructura, debe usar el operador -> de la siguiente manera:

struct_pointer->title;

Usemos punteros de estructura para reescribir el ejemplo anterior, que le ayudará a comprender el concepto de punteros 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( )
{
   Books Book1;        // 定义结构体类型 Books 的变量 Book1
   Books Book2;        // 定义结构体类型 Books 的变量 Book2
 
    // Book1 详述
   strcpy( Book1.title, "C++ 教程");
   strcpy( Book1.author, "Nowcoder");
   strcpy( Book1.subject, "编程语言");
   Book1.book_id = 12345;
 
   // Book2 详述
   strcpy( Book2.title, "CSS 教程");
   strcpy( Book2.author, "Nowcoder");
   strcpy( Book2.subject, "前端技术");
   Book2.book_id = 12346;
 
   // 通过传 Book1 的地址来输出 Book1 信息
   printBook( &Book1 );
 
   // 通过传 Book2 的地址来输出 Book2 信息
   printBook( &Book2 );
 
   return 0;
}
// 该函数以结构指针作为参数
void printBook( struct Books *book )
{
   cout << "书标题  : " << book->title <<endl;
   cout << "书作者 : " << book->author <<endl;
   cout << "书类目 : " << book->subject <<endl;
   cout << "书 ID : " << book->book_id <<endl;
}

Cuando el código anterior se compila y ejecuta, producirá los siguientes resultados:

书标题  : C++ 教程
书作者 : Nowcoder
书类目 : 编程语言
书 ID : 12345
书标题  : CSS 教程
书作者 : Nowcoder
书类目 : 前端技术
书 ID : 12346

palabra clave typedef

La siguiente es una forma más sencilla de definir la estructura, puede tomar un "alias" para el tipo creado. P.ej:

typedef struct Books
{
   char title[50];
   char author[50];
   char subject[100];
   int  book_id;
}BOOKS;   //大写
BOOKS book1, books;  //定义变量,用大写更好区分。

Ahora, puede usar directamente  Libros  para definir   variables de tipo Libros sin usar la palabra clave struct. Lo siguiente es un ejemplo:

Books Book1, Book2;

Puede utilizar la   palabra clave typedef para definir tipos no estructurales de la siguiente manera:

typedef long int *pint32;
 
pint32 x, y, z;
x, y 和 z 都是指向长整型 long int 的指针

 

Supongo que te gusta

Origin blog.csdn.net/Python6886/article/details/111874021
Recomendado
Clasificación