60. C++ || Estructuras acceso




Antes de empezar, debo aclarar que cuando me refiera al término “acceso a una estructura”, me referiré a acceder a los miembros que esta posee. Es decir, recuerden que cuando se declara una variable de tipo estructura, dicha variable contiene absolutamente todos los miembros con la cual fue declarada la estructura. Pero ahora, pensemos en ¿cómo manipular eso miembros, cómo acceder a ellos para darle un valor, o incluso mostrarlos en pantalla? De eso se trata esta parte.

Cuando accedemos a una estructura, lo hacemos con el fin de almacenar información o bien, recuperarla. Esto lo haremos de dos maneras:

  1. Utilizando el operador punto (.).
  2. Utilizando el operador puntero (->).


Almacenamiento de información en una estructura


Acceso a una estructura mediante el operador punto (.)


La sintaxis para almacenar datos en una estructura en C++ es la siguiente:

<Nombre de la variable estructura> . <Nombre miembro> = <Valor>

Donde:

  • Nombre de la variable estructura. Nombre con el cual fue declarada una variable de tipo estructura.
  • Nombre miembro. Nombre de un miembro de la estructura.
  • Valor. Valor que se le quiera dar a ese miembro de la estructura.

Nota: Valor y Nombre miembro deben ser del mismo tipo de dato.

Recordando la estructura del ejemplo pasado, los siguientes ejemplos son totalmente válidos:

cd1.titulo = "El mejor disco";
cd1.precio = 19.99;
cd1.numCanciones = 20;

El operador punto lo que hace es dar un camino exacto al miembro correspondiente de la estructura, los datos que queramos almacenar, deberán coincidir con el tipo de dato que corresponde al miembro de la estructura, es decir, los siguientes ejemplos no serán válidos:

cd1.titulo = 838392;
cd1.precio = 'a';
cd1.numCanciones = "Ninguna cancion";

De esta forma, si declaran un miembro de una estructura de tipo int, el compilador va a esperar a que se ingresen números enteros, en caso contrario, se producirá un resultado no esperado, o creará un error.


Acceso a una estructura mediante el operador puntero (->)


La sintaxis es igual que la anterior, la diferencia radica que en vez de utilizar un punto (.), se utiliza el operador puntero (->). Ejemplo:

<Nombre de la variable estructura> -> <Nombre miembro> = <Valor>

Para utilizar este operador, primero se debe definir la variable como un puntero que apunte a la estructura. Haciendo uso de la estructura anterior, podemos usar este operador de la siguiente forma:

discos_CD* punteroDisco;

punteroDisco -> titulo = "El mejor disco";
punteroDisco -> precio = 19.99;
punteroDisco -> numCanciones = 20;

Nota: El tema de punteros se verá un poco más adelante.

Lectura de información de una estructura


Si lo que queremos es introducir un valor a un miembro de la estructura por el teclado, lo haríamos de la misma manera que hemos hecho hace poco, pero ahora usando el objeto cin. Por ejemplo:

Con el operador punto:

cout << "Ingresa el titulo del CD normal\n";
cin.getline(normal_CD.titulo,30);
cout << "Ingresa el artista del CD normal\n";
cin.getline(normal_CD.artista,20);
cout << "Ingresa el numero de canciones del CD normal\n";
cin >> normal_CD.numCanciones;
cout << "Ingresa el precio del CD normal\n";
cin >> normal_CD.precio;

Con el operador puntero:

cout << "Ingresa el titulo del CD puntero\n";
cin.getline(puntero_CD -> titulo,30);
cout << "Ingresa el artista del CD puntero\n";
cin.getline(puntero_CD -> artista,20);
cout << "Ingresa el numero de canciones del CD puntero\n";
cin >> puntero_CD -> numCanciones;
cout << "Ingresa el precio del CD puntero\n";
cin >> puntero_CD -> precio;

Nota: No existe un orden para almacenar datos en una estructura, si lo hice de esa manera, fue sólo por comodidad. Así que pude haber ingresado primero los datos del precio que el titulo del CD.

Para mostrar el contenido almacenado en los miembros de la estructura se hace de manera similar, sólo hay que cambiar el objeto cin por el objeto cout.


Recuperación de información de una estructura


Para hacer esto usamos el operador de asignación o una sentencia cout. Al igual que como ya hemos hecho, podemos usar el operador punto, o el operador puntero. Por ejemplo:

<Nombre variable> = <Nombre variable estructura> . <Nombre miembro>

O bien, cuando se utiliza un puntero:

<Nombre variable> = <Puntero estructura> -> <Nombre miembro>

Y para mostrar en pantalla:

cout << <Nombre variable estructura> . <Nombre miembro>

Y para el caso de un puntero:

cout << <Puntero estructura> -> <Nombre miembro>

Los siguientes son ejemplos del uso de la estructura discos_CD

totalCanciones = cd1.numCanciones + cd2.numCanciones;
precio = cd1.precio;
cout << cd1.titulo;
artista = cd3 -> artista; 
cout << cd3 -> precio;

No hay comentarios