4. Inicialización y Acceso

Inicialización

#include<iostream>  
using namespace std;  
int main(){
   struct St_datos {float temperatura; int fecha[3];} dato; 
   dato={25.0,23,6,2021}; 
   cout<<dato.temperatura<<endl;  
   cout<<dato.fecha[0]<<endl;
   cout<<dato.fecha[1]<<endl;    
   cout<<dato.fecha[2]<<endl;
   return 0; 
}


Alternativa 2

#include<iostream>
using namespace std;
int main(){
   struct St_datos {float temperatura; int fecha[3];};
   St_datos dato;
   dato={25.0,23,6,2021};
   cout<<dato.temperatura<<endl;
   cout<<dato.fecha[0]<<endl;
   cout<<dato.fecha[1]<<endl;
   cout<<dato.fecha[2]<<endl;
   return 0;
}

Acceso con operador . (punto)

Para acceder a un elemento o miembro de la estructura:

nombre_de_la_instancia.nombre_del_miembro
Ejemplo:
cout<<dato.fecha[0]<<endl; //Nombre de instancia (dato)  punto Nombre del miembro punto fecha
cout<<dato.temperatura<<endl; //Nombre de instancia (dato)  punto Nombre del miembro temperatura.
Que es un anuncio - Gestion.Org
  • NO confundir el nombre de la estructura ( plantilla de datos ) con la variable (instancia) .
  • St_datos es el nombre de la plantilla de datos o estructura dato es el nombre de la instancia.
  • Para acceder a CADA miembro de la plantilla, si uso el NOMBRE DE LA INSTANCIA, debo usar el operador punto para acceder al miembro.
  • Notar la similitud de acceso que tiene una Estructura con las propiedades de un objeto en Python.

Igualando Estructuras.

Una propiedad interesante de las estructuras, es que si igualo dos estructuras del mismo tipo B=A, cada uno de los miembros de la estructura A son copiados a cada uno de los miembros de la estructura B.
Veamos un ejemplo:

La salida de este script sería:


Estructura como argumento de función.


Al igual que cualquier variable, una instancia se puede pasar como argumento de una función.


Nota que:
  • El argumento del prototipo y de la llamada es un tipo de dato persona.
  • Ver que la estructura es GLOBAL!! , está fuera de main, por eso mostrar puede usarla.