Estructuras
Las estructuras de datos se emplean con el fin de organizar los datos contenidos dentro de la memoria del ordenador. Así, desde el momento en que usamos en nuestros programas las variables de tipos primitivos (char, short, int, float, entre otros).
Las estructuras son llamadas también muy a menudo registros:
Sintaxis:
​
struct [<identificador>] {
[<tipo> <nombre_objeto>[,<nombre_objeto>,...]];
} [<objeto_estructura>[,<objeto_estructura>,...];
​
En C++ la palabra struct es opcional en la declaración de objetos:
Ejemplo:
​
struct Persona {
char Nombre[65];
char Direccion[65];
int AnyoNacimiento;
} Fulanito;
Este ejemplo define la estructura Persona y declara a Fulanito como un objeto de ese tipo. Para acceder al nombre de Fulanito, usaremos la forma:
cout << Fulanito.Nombre;
C++, permite incluir funciones en el interior de las estructuras. Normalmente estas funciones tienen la misión de manipular los datos incluidos en la estructura, y su uso está muy relacionado con la programación orientada a objetos.
Ejemplo:
#include <iostream>
using namespace std;
struct stPareja {
int A, B;
int LeeA() { return A;} // Devuelve el valor de A
int LeeB() { return B;} // Devuelve el valor de B
void GuardaA(int n) { A = n;} // Asigna un nuevo valor a A
void GuardaB(int n) { B = n;} // Asigna un nuevo valor a B
} Par;
int main() {
Par.GuardaA(15);
Par.GuardaB(63);
cout << Par.LeeA() << endl;
cout << Par.LeeB() << endl;
return 0;
}
ESTRUCTURAS CON ARREGLOS
La combinación de las estructuras con los arrays proporciona una potente herramienta para el almacenamiento y manipulación de datos.
Ejemplo:
​
struct Persona {
char Nombre[65];
char Direccion[65];
int AnyoNacimiento;
} Plantilla[200];
​
​
Vemos en este ejemplo lo fácil que podemos declarar el array Plantilla que contiene los datos relativos a doscientas personas.
Podemos acceder a los datos de cada uno de ellos:
cout << Plantilla[43].Direccion;
ESTRUCTURAS ANIDADAS
Una estructura puede estar dentro de otra estructura
a esto se le conoce como anidamiento o estructuras
anidadas. Ya que se trabajan con datos en estructuras
si definimos un tipo de dato en una estructura y
necesitamos definir ese dato dentro de otra estructura
solamente se llama el dato de la estructura anterior.
struct infopersona /* creamos la estructura que contiene datos parecidos */
{
char direccion[25];
char ciudad[20];
char provincia[20];
long int codigo_postal;
}; /* las estructuras necesitan punto y coma (;) al final */
​
​
Y crear las nuevas estructuras anteriores, anidando la estructura necesaria:
struct empleado /* se crea nuevamente la estructura */
{
char nombre_empleado[25];
/* creamos direcc_empleado con "struct" del tipo "estructura infopersona" */
struct infopersona direcc_empleado;
double salario;
}; /* las estructuras necesitan punto y coma (;) al final */
​
​