C++ Estructura con ejemplo

โšก Resumen inteligente

Estructura en C++ Es un tipo de datos definido por el usuario que agrupa elementos de diferentes tipos de datos bajo un mismo nombre, lo que permite que una variable contenga valores relacionados, como el nombre de una persona, su nacionalidad y su edad.

  • ๐Ÿ“ฆ Diferentes tipos de datos: Una estructura agrupa variables de tipos diferentes bajo un nombre definido por el usuario.
  • ๐Ÿ”‘ palabra clave de la estructura: Define una estructura con la palabra clave `struct` y, a continuaciรณn, enumera los miembros entre llaves.
  • ๐Ÿงฑ Creaciรณn de instancias: Al escribir la Persona p, se crea una variable de estructura y se le asigna memoria.
  • ๐ŸŽฏ Operador de punto: Lee o establece cualquier miembro a travรฉs de la instancia, como en p.age = 27.
  • โžก๏ธ Punteros y funciones: Una estructura trabaja con punteros y los pasa a una funciรณn como un argumento ordinario.
  • ๐Ÿค– Asistencia de IA: GitHub Copilot y otros asistentes de IA generan definiciones de estructuras y acceso a miembros a partir de un comentario.

C++ Estructura

ยฟQuรฉ es una estructura en C++?

Una ESTRUCTURA es una C++ Estructura de datos que se puede utilizar para almacenar juntos elementos de diferentes tipos de datos. En C++, una estructura es un tipo de datos definido por el usuario. La estructura crea un tipo de datos para grupos.ping elementos de diferentes tipos de datos bajo un รบnico tipo de datos.

Por ejemplo:

Supongamos que necesita almacenar informaciรณn sobre alguien, su nombre, ciudadanรญa y edad. Puede crear variables como nombre, ciudadanรญa y edad para almacenar los datos por separado.

Sin embargo, es posible que en el futuro necesites almacenar informaciรณn sobre muchas personas. Esto implica la creaciรณn de variables para diferentes individuos. Por ejemplo, nombre1, ciudadanรญa1, edad1, etc. Para evitar esto, es mejor crear una estructura.

ยฟCuรกndo utilizar una Estructura?

Aquรญ hay algunas razones para usar la estructura en C++.

  • Utilice una estructura cuando necesite almacenar elementos de diferentes tipos de datos en un mismo tipo de datos.
  • C++ Las estructuras son un tipo de valor en lugar de un tipo de referencia. Utilice una estructura si no tiene intenciรณn de modificar sus datos despuรฉs de la creaciรณn.

C++ Inicializaciรณn de estructura

Para crear un C++ estructura, utilizamos la palabra clave struct, seguida de un identificador. El identificador se convierte en el nombre de la estructura. Aquรญ estรก la sintaxis para la creaciรณn de un C++ estructura:

Sintaxis:

struct struct_name  
{  
     // struct members
}   

En la sintaxis anterior, hemos utilizado la palabra clave struct. struct_name es el nombre de la estructura.

Los miembros de la estructura se agregan entre llaves. Estos miembros probablemente pertenecen a diferentes tipos de datos.

Por ejemplo:

struct Person  
{  
    char name[30];  
     int citizenship;  
     int age;  
}  

En el ejemplo anterior, Persona es una estructura con tres miembros. Los miembros incluyen nombre, ciudadanรญa y edad. Un miembro es del tipo de datos char, mientras que los 2 restantes son nรบmeros enteros cuando se crea una estructura, no se asigna memoria. La memoria solo se asigna despuรฉs de que se agrega una variable a la estructura.

Crear instancias de estructura

En el ejemplo anterior, hemos creado una estructura llamada Persona. Podemos crear una variable de estructura de la siguiente manera:

Person p;

La p es una variable de estructura de tipo Persona. Podemos usar esta variable para acceder a los miembros de la estructura.

Accediendo a los miembros de la estructura

Para acceder a los miembros de la estructura, utilizamos la instancia de la estructura y el operador punto (.). Por ejemplo, para acceder al miembro age de la estructura Person:

p.age = 27;

Hemos accedido a la edad del miembro de la estructura Persona utilizando la instancia de la estructura, p. Luego hemos establecido el valor de la edad del miembro en 27.

Ejemplo 1:

#include <iostream>    
using namespace std;
struct Person
{
	int citizenship;
	int age;
};
int main(void) {
	struct Person p;
	p.citizenship = 1;
	p.age = 27;
	cout << "Person citizenship: " << p.citizenship << endl;
	cout << "Person age: " << p.age << endl;

	return 0;
}

Salida:

Accediendo a los miembros de la estructura

Aquรญ hay una captura de pantalla del cรณdigo:

Accediendo a los miembros de la estructura

Code Explicaciรณn:

  1. Incluya el archivo de encabezado iostream en nuestro programa para usar las funciones definidas en รฉl.
  2. Incluya el espacio de nombres estรกndar para usar sus clases sin llamarlo.
  3. Crea una estructura llamada Persona.
  4. El comienzo del cuerpo de la estructura.
  5. Cree un miembro de estructura denominado ciudadanรญa de tipo entero.
  6. Cree un miembro de estructura llamado edad de tipo entero.
  7. Fin del cuerpo de la estructura.
  8. Llame a la funciรณn principal(). La lรณgica del programa debe agregarse dentro del cuerpo de esta funciรณn.
  9. Cree una instancia de la estructura Persona y asรญgnele el nombre p.
  10. Establezca el valor de ciudadanรญa del miembro de estructura en 1.
  11. Establezca el valor de la edad del miembro de la estructura en 27.
  12. Imprima el valor de la ciudadanรญa del miembro de la estructura en la consola junto con algรบn otro texto.
  13. Imprima el valor de la edad del miembro de la estructura en la consola junto con otro texto.
  14. El programa deberรญa devolver un valor si se ejecuta correctamente.
  15. Fin de la funciรณn main().

Consejos para la estructura

Es posible crear un puntero que apunte a una estructura. Es similar a cรณmo se crean los punteros que apuntan a tipos de datos nativos como int, float, double, etc. Tenga en cuenta que un puntero en C++ almacenarรก una ubicaciรณn de memoria.

Ejemplo 2:

#include <iostream>
using namespace std;

struct Length
{
	int meters;
	float centimeters;
};

int main()
{
	Length *ptr, l;

	ptr = &l;

	cout << "Enter meters: ";
	cin >> (*ptr).meters;
	cout << "Enter centimeters: ";
	cin >> (*ptr).centimeters;
	cout << "Length = " << (*ptr).meters << " meters " << (*ptr).centimeters << " centimeters";

	return 0;
}

Salida:

Consejos para la estructura

Aquรญ hay una captura de pantalla del cรณdigo:

Consejos para la estructura

Code Explicaciรณn:

  1. Incluya el archivo de encabezado iostream en nuestro programa para poder utilizar sus funciones.
  2. Incluya el espacio de nombres estรกndar en nuestro programa para usar sus clases sin llamarlo.
  3. Cree una estructura llamada Longitud.
  4. Inicio del cuerpo de la estructura Longitud.
  5. Cree un miembro de estructura llamado metros de tipo de datos entero.
  6. Cree un miembro de estructura llamado centรญmetros de tipo entero.
  7. Fin del cuerpo de la estructura Longitud.
  8. Llame a la funciรณn principal().
  9. Inicio del cuerpo de la funciรณn main().
  10. Cree una variable de puntero *ptr y una variable normal l de tipo Longitud.
  11. Almacene la direcciรณn de la variable l en nuestro variable de puntero.
  12. Muestra un mensaje en la consola, solicitando al usuario que ingrese el valor de los medidores variables.
  13. Leer el valor ingresado por el usuario a travรฉs del teclado. Aquรญ se accede a los medidores de funciones miembro mediante la variable de puntero.
  14. Mostrar un mensaje en la consola, solicitando al usuario que ingrese el valor de la variable centรญmetros.
  15. Leer el valor ingresado por el usuario a travรฉs del teclado. Aquรญ se accede a la funciรณn miembro centรญmetros mediante la variable de puntero.
  16. Muestra los valores leรญdos del usuario en la consola junto con algรบn otro texto.
  17. El programa debe devolver un valor tras una ejecuciรณn exitosa.
  18. Fin del cuerpo de la funciรณn main().

Estructura como argumento de funciรณn

Puedes pasar una estructura a una funciรณn como argumento. Esto se hace de la misma manera que se pasa un argumento normal. Las variables de estructura tambiรฉn se pueden pasar a una funciรณn. Un buen ejemplo es cuando necesita mostrar los valores de los miembros de la estructura. Demostremos esto:

Ejemplo 3:

#include<iostream>
using namespace std;

struct Person
{
	int citizenship;
	int age;
};

void func(struct Person p);

int main()
{
	struct Person p;

	p.citizenship = 1;
	p.age = 27;

	func(p);
	return 0;
}
void func(struct Person p)
{
	cout << " Person citizenship: " << p.citizenship<<endl;
	cout << " Person age: " << p.age;
}

Salida:

Estructura como argumento de funciรณn

Aquรญ hay una captura de pantalla del cรณdigo:

Estructura como argumento de funciรณn

Code Explicaciรณn:

  1. Incluya el archivo de encabezado iostream en nuestro archivo. Luego usaremos sus funciones sin obtener errores.
  2. Incluya el espacio de nombres estรกndar en nuestro programa para usar sus clases. No necesitaremos llamar al espacio de nombres para usar sus clases.
  3. Crea una estructura llamada Persona.
  4. Inicio del cuerpo de la estructura Persona.
  5. Crea un miembro de la estructura Persona. El miembro se denomina ciudadanรญa y es de tipo entero.
  6. Crea un miembro de la estructura Persona. El miembro se llama edad y es de tipo entero.
  7. Fin del cuerpo de la estructura Persona.
  8. Cree una funciรณn que tome la instancia de struct Person, p, como argumento.
  9. Llame a la funciรณn principal. El { marca el comienzo del cuerpo de la funciรณn main().
  10. Cree una instancia de struct Person y asรญgnele el nombre p.
  11. Acceda a la variable miembro de la estructura ciudadanรญa utilizando la instancia de la estructura, p, y asignรกndole el valor 1.
  12. Acceda a la variable miembro de la estructura edad usando la instancia de la estructura, p, y asignรกndole el valor 27.
  13. Llame a la funciรณn y pรกsele la instancia de la estructura Persona, p, como argumento.
  14. La funciรณn debe devolver un valor tras una ejecuciรณn exitosa.
  15. Fin del cuerpo de la funciรณn main().
  16. Crea el cuerpo de la funciรณn.
  17. El inicio del cuerpo de la funciรณn.
  18. Acceda al valor de ciudadanรญa del miembro de la estructura e imprรญmalo en la consola junto con otro texto.
  19. Acceda al valor de edad del miembro de la estructura e imprรญmalo en la consola junto con otro texto.
  20. Fin del cuerpo de la funciรณn.

Limitaciรณn de un C++ estructura

Las limitaciones de las estructuras son las siguientes:

  • El tipo de datos de estructura no se puede tratar como tipos de datos integrados.
  • Operators como + -, y otros no se pueden utilizar en variables de estructura.
  • Las estructuras no admiten la ocultaciรณn de datos. Cualquier funciรณn puede acceder a los miembros de una estructura independientemente de su alcance.
  • Los miembros estรกticos no se pueden declarar dentro del cuerpo de la estructura.
  • No se pueden crear constructores dentro de una estructura.

Preguntas Frecuentes

In C++ Una estructura y una clase son prรกcticamente idรฉnticas. La รบnica diferencia real radica en el acceso predeterminado: los miembros de una estructura son pรบblicos por defecto, mientras que los de una clase son privados. Ambas admiten funciones miembro, constructores y herencia.

La estructura AC solo contiene datos, y debe escribir la estructura antes de cada declaraciรณn de variable. C++ Una estructura tambiรฉn puede incluir funciones miembro, constructores y especificadores de acceso, y la palabra clave `struct` es opcional al declarar variables.

Declara la estructura y luego define un array de la misma, por ejemplo, `Person people[3]`. Cada elemento es una estructura completa y se accede a sus miembros con `people[0].age`. Los arrays de estructuras almacenan varios registros del mismo tipo juntos.

Una estructura anidada es una estructura declarada como miembro dentro de otra estructura. Agrupa subdatos relacionados, como una estructura de tipo Fecha dentro de una estructura de tipo Empleado. Se accede a los miembros internos mediante el operador punto.

El tamaรฑo es aproximadamente la suma de sus miembros, mรกs el relleno que el compilador aรฑade para la alineaciรณn, por lo que sizeof puede exceder el total bruto. Las funciones miembro no aรฑaden nada. Ordenar los miembros por tamaรฑo reduce el relleno innecesario.

Utilice el operador de flecha cuando tenga un puntero a una estructura. En lugar de (*ptr).age, el atajo ptr->age lee el mismo miembro. El operador de punto funciona con una instancia directa, no con un puntero.

Sรญ. Los asistentes de codificaciรณn de IA convierten una breve indicaciรณn o comentario en un cรณdigo completo. C++ Estructura, incluyendo miembros, constructores y acceso a campos. Siempre revise los tipos de datos generados y su alineaciรณn, ya que la IA puede pasar por alto requisitos especรญficos del proyecto.

Sรญ. Copiloto de GitHub Sugiere definiciones de estructuras, variables miembro y acceso mediante punto o flecha mientras escribes en tu editor. Maneja bien el cรณdigo repetitivo, aunque conviene verificar los tipos, el relleno y la lรณgica antes de compilar.

Resumir este post con: