A menudo nos encontramos con situaciones en las que necesitamos almacenar un grupo de datos, ya sean de tipos de datos similares o de tipos de datos no similares. Hemos visto matrices en C++ que se utilizan para almacenar conjuntos de datos de tipos similares en ubicaciones de memoria contiguas.
A diferencia de las matrices, Estructuras en C++ son tipos de datos definidos por el usuario que se utilizan para almacenar grupos de elementos de tipos de datos no similares.
¿Qué es una estructura?
Una estructura es un tipo de datos definido por el usuario en C/C++. Una estructura crea un tipo de datos que se puede utilizar para agrupar elementos de tipos posiblemente diferentes en un solo tipo.

Estructuras en C++
¿Cómo crear una estructura?
La palabra clave 'estructura' se utiliza para crear una estructura. La sintaxis general para crear una estructura es la que se muestra a continuación:
struct structureName{ member1; member2; member3; . . . memberN; };> Las estructuras en C++ pueden contener dos tipos de miembros:
- Miembro de datos: estos miembros son variables normales de C++. Podemos crear una estructura con variables de diferentes tipos de datos en C++. Funciones miembro: estos miembros son funciones normales de C++. Junto con las variables, también podemos incluir funciones dentro de una declaración de estructura.
Ejemplo :
topología de las estrellas
C++
// Data Members> int> roll;> int> age;> int> marks;> > // Member Functions> void> printDetails()> {> >cout<<>'Roll = '><'
'; cout<<'Age = '< '
'; cout<<'Marks = '< }> |
>
>
En la estructura anterior, los miembros de datos son tres variables enteras para almacenar número de rollo, antigüedad y marcas de cualquier estudiante y la función miembro es imprimirDetalles() que está imprimiendo todos los detalles anteriores de cualquier estudiante.
¿Cómo declarar variables de estructura?
Una variable de estructura se puede declarar con una declaración de estructura o como una declaración separada como los tipos básicos.
C++
// A variable declaration with structure declaration.> struct> Point> {> >int> x, y;> } p1;>// The variable p1 is declared with 'Point'> // A variable declaration like basic data types> struct> Point> {> >int> x, y;> };> int> main()> {> >struct> Point p1;>// The variable p1 is declared like a normal variable> }> |
>
>
Nota: En C++, la palabra clave struct es opcional antes de la declaración de una variable. En C, es obligatorio.
¿Cómo inicializar los miembros de la estructura?
Miembros de la estructura no puede ser inicializado con declaración. Por ejemplo, el siguiente programa en C falla en la compilación.
Pero se considera correcto en C++ 11 y superior.
C++
struct> Point> {> >int> x = 0;>// COMPILER ERROR: cannot initialize members here> >int> y = 0;>// COMPILER ERROR: cannot initialize members here> };> |
>
>
El motivo del error anterior es simple: cuando se declara un tipo de datos, no se le asigna memoria. La memoria se asigna solo cuando se crean variables.
Los miembros de la estructura se pueden inicializar con una declaración en C++. Por ejemplo, el siguiente programa C++ se ejecuta correctamente sin generar ningún error.
C++
// In C++ We can Initialize the Variables with Declaration in Structure.> #include> using> namespace> std;> struct> Point {> >int> x = 0;>// It is Considered as Default Arguments and no Error is Raised> >int> y = 1;> };> int> main()> {> >struct> Point p1;> >// Accessing members of point p1> >// No value is Initialized then the default value is considered. ie x=0 and y=1;> >cout <<>'x = '> << p1.x <<>', y = '> << p1.y< // Initializing the value of y = 20; p1.y = 20; cout << 'x = ' << p1.x << ', y = ' << p1.y; return 0; } // This code is contributed by Samyak Jain> |
>
formato de cadena java largo
>
x=0, y=1 x=0, y=20>
Los miembros de la estructura se pueden inicializar usando llaves '{}'. Por ejemplo, la siguiente es una inicialización válida.
C++
struct> Point {> >int> x, y;> };> int> main()> {> >// A valid initialization. member x gets value 0 and y> >// gets value 1. The order of declaration is followed.> >struct> Point p1 = { 0, 1 };> }> |
>
>
¿Cómo acceder a los elementos de la estructura?
Se accede a los miembros de la estructura mediante el operador punto (.).
C++
#include> using> namespace> std;> struct> Point {> >int> x, y;> };> int> main()> {> >struct> Point p1 = { 0, 1 };> >// Accessing members of point p1> >p1.x = 20;> >cout <<>'x = '> << p1.x <<>', y = '> << p1.y;> >return> 0;> }> |
>
>Producción
x = 20, y = 1>
¿Qué es un conjunto de estructuras?
Al igual que otros tipos de datos primitivos, podemos crear una serie de estructuras.
C++
#include> using> namespace> std;> struct> Point {> >int> x, y;> };> int> main()> {> >// Create an array of structures> >struct> Point arr[10];> >// Access array members> >arr[0].x = 10;> >arr[0].y = 20;> >cout << arr[0].x <<>' '> << arr[0].y;> >return> 0;> }> |
>
>Producción
10 20>
¿Qué es un puntero de estructura?
Como los tipos primitivos, podemos tener un puntero a una estructura. Si tenemos un puntero a la estructura, se accede a los miembros utilizando el operador de flecha (->) en lugar del operador de punto (.).
C++
cómo ejecutar un script
#include> using> namespace> std;> struct> Point {> >int> x, y;> };> int> main()> {> >struct> Point p1 = { 1, 2 };> >// p2 is a pointer to structure p1> >struct> Point* p2 = &p1;> >// Accessing structure members using> >// structure pointer> >cout ' ' return 0; }> |
>
>Producción
1 2>
¿Qué es la alineación de los miembros de la estructura?
Ver Obtenga más información sobre las diferencias entre estructuras y clases en C++ .