Estructuras
6. Estructuras Anidadas
Como una estructura en un tipo de datos o plantilla creada por el programador, nada impide que no se pueda declarar una o mas estructuras dentro de una estructura.
Las estructuras definidas dentro de otra estructura DEBEN estar instanciadas, si no, NO HAY FORMA DE ACCEDER ellas.
#include <iostream>
>#define instancias 2
using namespace std;
//Declaro Estructuras Globales.
struct St_Personas
{
char nombre[10],apellido[20];
long dni;
};//declaro estructura (plantilla) NO hay instancias!!
struct St_otros_datos
{
int dia,mes,anio;
};//declaro estructura (plantilla) NO hay instancias!!
int main()
{
//declaro estructuras anidadas..pero DOY NOMBRE A LAS INSTANCIAS!
struct St_Registro{St_Personas persona; St_otros_datos otros;} alta_datos[instancias];
for(int s=0;s<instancias;s++)
{
cout<<endl<<"Nombre :";cin>>alta_datos[s].persona.nombre;
cout<<endl<<"Apellido :";cin>>alta_datos[s].persona.apellido;
cout<<endl<<"DNI :";cin>>alta_datos[s].persona.dni;
cout<<endl<<"Dia Nacimiento :";cin>>alta_datos[s].otros.dia;
cout<<endl<<"Mes Nacimiento :";cin>>alta_datos[s].otros.mes;
cout<<endl<<"Año Nacimiento :";cin>>alta_datos[s].otros.anio;
}
for(int s=0;s<instancias;s++)
{
cout<<endl;
cout<<alta_datos[s].persona.nombre<<"\t";
cout<<alta_datos[s].persona.apellido<<"\t";
cout<<alta_datos[s].persona.dni<<"\t";
cout<<alta_datos[s].otros.dia<<"\t";
cout<<alta_datos[s].otros.mes<<"\t";
cout<<alta_datos[s].otros.anio<<"\t";
cout<<endl;
}
return 0;
}
¿Como accedo al miembro de una estructura anidada? , trate de identificar las partes y descríbalas con los nombres apropiados.
¿alta_datos que tipo de datos es? ¿Es local o global?
¿personas que tipo de datos es?¿Es local o global?
¿otros que tipo de datos es?¿Es local o global?
¿St_Personas que es? ¿Es local o global?
¿St_otros_datos que es? ¿Es local o global?