59. C++ || Estructuras declaración, definición e inicialización



Como habíamos dicho en la entrada pasada, una estructura supone un nuevo tipo de dato en C++, pero para que el lenguaje reconozca el nombre de la estructura como un tipo de dato, es necesario declarar, o crear esa estructura para que el compilador sepa de qué se trata. Bien, la forma de declarar una estructura en C++ es la siguiente:

Declaración de una estructura


Antes de usar cualquier tipo de dato estructura, debemos declararlas, y para eso usamos la siguiente sintaxis:

struct nombreEstructura{
 <Tipo de dato miembro 1> <Nombre miembro 1>
 <Tipo de dato miembro 2> <Nombre miembro 2>
 <Tipo de dato miembro 3> <Nombre miembro 3>
 .
 .
 .
 <Tipo de dato miembro n> <Nombre miembro n>
};

Donde:

  • struct. Palabra reservada por C++ para declarar una estructura.
  • nombreEstructura. Cualquier nombre permitido que se le quiera colocar al nuevo tipo de dato.
  • Tipo dato miembro. Cualquier tipo de dato que se quiera incorporar a la estructura, puede ser int, char, float, o incluso uno creado por el usuario a partir de una estructura o clase.
  • Nombre miembro. Un nombre permitido que se le quiera dar a cada variable que esté dentro de la estructura.

Nota: Todas las estructuras en C++ deben terminar con punto y coma (;) al final de la llave de cierre.

Un ejemplo de una construcción de estructura en C++ sería el siguiente:

struct discos_CD{
 char titulo[30];
 char artista[20];
 int numCanciones;
 float precio;
};

Pudiésemos agregar cuantos datos miembros deseemos, pero en nuestro ejemplo, no hacía falta de más.


Definición de una variable estructura


Luego de haber declarado la estructura, naturalmente debemos pensar en hacer uso de ella. La forma de hacerlo es por medio de la creación de variables, a fin de que estas puedan contener todos los datos miembros con la cual fue definida.

En C++ hay un concepto clave que debemos tener siempre presente: declaración y definición. La diferencia entre ambos conceptos es muy simple, básicamente, una declaración específica el nombre y el formato de la estructura, de esta manera le da información al compilador para saber cómo se puede trabajar con este nuevo tipo de dato, lo que se puede hacer, y lo que no. Un declaración no reserva espacio en memoria, una definición sí. Y ahí se muestra la diferencia, en una definición se reserva un espacio en la memoria para almacenar el formato de la estructura de igual forma como ha sido declarado.

En C++ podemos definir variables estructuras de dos formas:

  1. Colocando el nombre de las variables inmediatamente después de colocar la llave de cierre.
  2. De la misma manera que como se crea cualquier otra variable de un tipo de dato estándar.

Podríamos crear variables de tipo discos_CD de la siguiente manera:

struct discos_CD{
 char titulo[30];
 char artista[20];
 int numCanciones;
 float precio;
}cd1, cd2, cd3;

//O bien, en cualquier lugar del programa de la siguiente forma:

discos_CD cd1, cd2, cd3;

Un ejemplo más completo donde se usan ambos métodos es como sigue:

#include <iostream>
using namespace std;

struct discos_CD{
 char titulo[30];
 char artista[20];
 int numCanciones;
 float precio;
}cd1; //Aquí declaramos una variable de tipo discos_CD

void mostrarDiscos();

int main(){
 //Declaramos dos variables más de tipo discos_CD
 //En la función principal main()
 discos_CD cd2, cd3; 
 //Resto del código...
 return 0;
}

void mostrarDiscos(){
 //Declaramos una cuarta variable de tipo discos_CD
 //Dentro de una función
 discos_CD cd4; 
 //Resto del código...
}


Inicialización de una variable estructura


Recordemos que la inicialización es darle un valor a una variable, con lo visto anteriormente, esto no suponen ningún reto. Cuando se inicializa un estructura como parte de una declaración, se específican los valores iniciales dentro de llaves. Ejemplo:

struct discos_CD{
 char titulo[30];
 char artista[20];
 int numCanciones;
 float precio;
}cd1 = {"Titulo del disco", "Nombre del artista", 10, 20.5};

//O bien, en cualquier parte del programa: 

discos_CD cd1 = {"Titulo del disco", "Nombre del artista", 10, 20.5};

No hay comentarios