La asignación de estructuras está permitida, pero sólo entre variables del mismo tipo de estructura, salvo que se usen constructores, y funciona como la intuición dice que debe hacerlo.
Veamos un ejemplo:
struct Punto { int x, y; Punto() {x = 0; y = 0;} } Punto1, Punto2; int main() { Punto1.x = 10; Punto1.y = 12; Punto2 = Punto1; }
La línea:
Punto2 = Punto1;
equivale a:
Punto2.x = Punto1.x; Punto2.y = Punto1.y;
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;
O asignar los datos de un elemento de la plantilla a otro:
Plantilla[0] = Plantilla[99];
También está permitido anidar estructuras, con lo cual se pueden conseguir superestructuras muy elaboradas.
Ejemplo:
struct stDireccion { char Calle[64]; int Portal; int Piso; char Puerta[3]; char CodigoPostal[6]; char Poblacion[32]; }; struct stPersona { struct stNombre { char Nombre[32]; char Apellidos[64]; } NombreCompleto; stDireccion Direccion; char Telefono[10]; }; ...
En general, no es una práctica corriente definir estructuras dentro de estructuras, ya que resultan tener un ámbito local, y para acceder a ellas se necesita hacer referencia a la estructura más externa.
Por ejemplo para declarar una variable del tipo stNombre hay que utilizar el operador de acceso (::):
stPersona::stNombre NombreAuxiliar;
Sin embargo para declarar una variable de tipo stDireccion basta con declararla:
stDireccion DireccionAuxiliar;
a) Buscar por nombre
b) Buscar por número de teléfono
c) Salir
Pulsa una opción:
© Septiembre de 2.000 Salvador Pozo, salvador@c-con-clase.every1.net