Una estructura de datos es un grupo de elementos de datos agrupados bajo el mismo nombre. Estos elementos de datos, llamados miembros, pueden tener diferentes tipos y longitudes. Las estructuras de datos se pueden declarar en C++ utilizando la siguiente sintaxis:

    struct type_name {type_member1 name_member1;type_member2 name_member2;type_member3 name_member3;...} object_names;

    Donde type_name es un nombre para el tipo de estructura, object_name puede ser un conjunto de identificadores válidos para objetos que tengan el tipo de esta estructura. Entre paréntesis {}, hay una lista con los datos de los miembros, cada uno especificado con un tipo y un identificador válido como nombre.

    Por ejemplo:

    struct product{ int weight; double price;};apple product;banana product;melon;

    Declara un tipo de estructura, llamada producto, y la define con dos miembros: peso y precio, cada uno de un tipo fundamental diferente. Esta declaración crea un nuevo tipo (producto), que se utiliza para declarar tres objetos (variables) de este tipo: manzana, plátano y melón. Tenga en cuenta que una vez declarado el producto, se utiliza como cualquier otro tipo.

    Justo al final de la definición de la estructura, y antes del punto y coma (;), el campo opcional object_names puede utilizarse para declarar directamente objetos del tipo de estructura. Por ejemplo, los objetos de estructura manzana, plátano y melón pueden declararse cuando se define el tipo de estructura de datos:

    struct producto { int peso; doble precio;} manzana, plátano, melón;

    En este caso, cuando se especifican nombres de objeto, el nombre del tipo (producto) se convierte en opcional: la estructura requiere un nombre de tipo o al menos un nombre en los nombres de objeto, pero no necesariamente ambos.

    Es importante distinguir el nombre del tipo de estructura (producto) del tipo de objeto de este tipo (manzana, plátano y melón. Muchos objetos (como manzanas, plátanos y melones) pueden declararse a partir de un único tipo de estructura (producto.

    Una vez declarados los tres objetos de un determinado tipo de estructura (manzana, plátano y melón), sus miembros son directamente accesibles. La sintaxis para esto es simplemente insertar un punto (.) entre el nombre del objeto y el nombre del miembro. Por ejemplo, podríamos utilizar cualquiera de estos elementos como si fueran variables estándar de sus respectivos tipos:

    Peso.de.la.manzana Precio.de.la.manzana Peso.del.plátano Precio.del.plátano.según.el.precio

    Cada uno de estos tipos tiene el tipo de datos correspondiente al miembro al que se refieren: manzana.peso, plátano.peso y melón.peso son del tipo int, mientras que manzana.precio, plátano.precio y melón.precio son del tipo doble.

    He aquí un ejemplo real con tipos de estructura en acción:

    // ejemplo sobre estructuras#incluye <iostream>#incluye <string>#incluye <sstream>usando namespace std;struct movies_t { título de la cadena ; int year;} mine, yours;void printmovie (movies_t movie);int main (){ string mystr; mine.

    t

    itle = "Space Odyssey 2001"; mine.year = 1968; cost <<<< "Enter title:"; getline (cin, yours.title); cost <<<< "Enter year:"; getline (cin, mystr); stringstream (mystr) >> yours.year; cost <<< "My favorite movie is: \ n"; printmovie (mine); cost <<<< "And yours is: printmovie (yours); return 0;}void printmovie (movies_t movie){ cout <<<< movie.title; cout <<"(" <<<< movie.year <<") \ n") \ n";}

    Resultado de la ejecución:

    Entra el título: AlienEntre el año: 1979Mi película favorita es: 2001 A Space Odyssey (1968)Y la tuya es: Alien (1979)
    

    El ejemplo muestra cómo los miembros de un objeto actúan como variables normales. Por ejemplo, el miembro yours.year es una variable válida de tipo int y mine.title es una variable válida de tipo string.

    También lee Las cadenas en C++Pero

    los objetos de

    la

    mina y los tuyos también son variables de tipo (movies_t)

    .

    Por ejemplo, ambas funciones han sido cambiadas para que funcionen como si fueran variables simples. Por lo tanto, una de las características de las estructuras de datos es la capacidad de referirse a sus miembros individualmente o a toda la estructura. En ambos casos utilizando el mismo identificador: el nombre de la estructura.

    Puesto que las estructuras son tipos, también pueden utilizarse como tipos de tabla para crear tablas o bases de datos:

    // estructura table#include <iostream>#include <string>#include <sstream>usando namespace std;struct movies_t { título de la cadena; int year;} films[3];void printmovie (movies_t movie);int main (){ string mystr; int n; for (n = 0; n <3; n ++) { cost <<<<<< "Enter title:"; getline (cin, films[n] .

    t

    ítulo); coste <<<< "Enter year:"; getline (cin, mystr); stringstream (mystr) >> películas[n].year; } coste << "\ nYou entered these movies: \ n"; para (n = 0; n <3; n ++) película (películas[n]); devolución 0;}void printmovie (movies_t movie){ coste <<<< movie.title; coste <<"(" <<<<<<<<" película.year<<<") \ n";} n";}.

    Resultado de la ejecución:

    Entra el título: Blade RunnerEntra el año: 1982Entra el título: The MatrixEntra el año: 1999Entra el título: Taxi DriverEntra el año: 1976 Entraste estas películas: Blade Runner (1982)La matriz (1999)Taxi Driver (1976)
    

    Como cualquier otro tipo, las estructuras pueden ser designadas por su propio tipo de punteros:

    struct movies_t { título de la cadena; int year;};movies_t removible;movies_t * pmovie;

    Aquí, la película es una estructura objeto movies_t y pmovie es un puntero que apunta a objetos structure movies_t. Por lo tanto, el siguiente código también sería válido:

    pmovie = & removible;

    El valor del puntero de la película se asignaría a la dirección del objeto extraíble.

    Veamos ahora otro ejemplo que mezcla punteros y estructuras y que se utilizará para introducir un nuevo operador: el operador de flecha (->):

    // punteros a estructuras#include <iostream>#include <string>#include <sstream>usando namespace std;struct movies_t { título de la cadena; int year;};int main (){ string mystr; movies_tie; movies_t * pmovie; pmovie = & amovie; cout <<<<< "Introducir el título:

    «

    getline (cin, pmovie-> title); coste <<< "Enter year:"; getline (cin, mystr); (stringstream) mystr >> pmovie-> year; cost <<< "nYou have entered: \ n"; coste <<<<< pmovie-> título; coste <<<"(" <<< pmovie-> año << ") \ n"; devolución 0;}}.

    Resultado de la ejecución:

    Entrar título: Invasión de ladrones de cuerposEntrar año: 1978 Entrar:Invasión de ladrones de cuerpos (1978)
    

    El operador de flecha (->) es un operador de referencia utilizado exclusivamente con punteros en objetos con barras. Este operador le permite acceder al miembro de un objeto directamente desde su dirección. Por ejemplo, en el ejemplo anterior:

    pmovie -> título

    es equivalente a:

    (*pmovie.title

    Ambas expresiones, pmovie-> title y (* pmovie) .title son válidas, y ambas acceden al título del miembro de la estructura de datos apuntado por un puntero llamado pmovie. Ciertamente es algo diferente:

    *pmovie.title

    lo que es casi equivalente a:

    *(pmovie.title)

    Esto permitiría acceder al valor indicado por un hipotético miembro del puntero llamado título del objeto de estructura de la película (lo que no es el caso, porque el título no es un tipo de puntero.

    Lea también Las funciones en C++++Otros

    consejos interesantes:

    1. C++ Ejercicios con soluciones Ejercicios corregidos en lenguaje C++, descargue también la lista completa de ejercicios (lenguaje C, C++, tablas, punteros,……. Vea a continuación una serie de ejercicios para descargar. Ejercicios 1: Escribir un programa en C….
    2. Introducción a HTML Lo que es HTML, HTML es el lenguaje de marcado estándar para crear páginas web. HTML significa Hyper Text Markup Language (Lenguaje de marcado de hipertexto. HTML describe la estructura de las páginas web utilizando marcas de revisión……
    3. Convertir FAT32 a NTFS sin pérdida de formato o de datos Usted tiene una unidad flash o probablemente un disco duro externo que actualmente tiene el sistema de archivos FAT32 y desea cambiar a NTFS, porque FAT32 no soporta el manejo masivo……
    4. Cómo borrar tu cuenta de Facebook (o al menos proteger tus datos) Cómo borrar tu cuenta de Facebook (o al menos proteger tus datos) Ryan Lynch 27 de marzo de 2018 Internet 1 CommentShare Tweet EmailShare Tweet EmailShare Tweet EmailShare Tweet EmailEl hashtag «#deletefacebook» está actualmente en Twitter. Esto viene en respuesta……
    5. El compilador en C++ Las herramientas esenciales necesarias para seguir estos tutoriales son un ordenador y una cadena de compilación para compilar el código C++ y construir los programas para ejecutarse. C ++ es un idioma……