English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C nos proporciona la función de anidar una estructura dentro de otra, creando tipos de datos complejos. Por ejemplo, es posible que necesitemos almacenar la dirección del empleado en la estructura. Y la dirección también puede contener otras información, como el número de calle, la ciudad, el distrito y la contraseña. Por lo tanto, para almacenar la dirección del empleado, necesitamos almacenar la dirección del empleado en una estructura separada y anidar la dirección de esta estructura en la estructura del empleado. Vea el siguiente programa.
#include<stdio.h> struct address { char city[20]; int pin; char phone[14]; }; struct employee { char name[20]; struct address add; }; void main () { struct employee emp; printf("Ingrese información del empleado?\n"); scanf("%s %s %d %s",emp.name,emp.add.city, &emp.add.pin, emp.add.phone); printf("Imprimir información del empleado...\n"); printf("Nombre: %s\nCiudad: %s\nNúmero de P: %d\nTeléfono: %s", emp.name, emp.add.city, emp.add.pin, emp.add.phone); }
Resultado de la salida
¿Introducir información del empleado? Arun Delhi 110001 1234567890 Imprimir información del empleado... Nombre: Arun Ciudad: Delhi Número: 110001 Teléfono: 1234567890
La estructura se puede anidar de la siguiente manera.
A través de estructuras separadas
A través de la estructura integrada
Aquí, creamos dos estructuras, pero la estructura dependiente debe usarse como miembro dentro de la estructura principal. Vea el siguiente ejemplo.
struct Date { int dd; int mm; int yyyy; }; struct Employee { int id; char name[20]; struct Date doj; }emp1;
Se puede ver que doj es una variable de tipo date. Aquí, doj se utiliza como miembro de la estructura Employee. De esta manera, podemos usar la estructura Date en muchas estructuras.
La estructura integrada nos permite declarar estructuras dentro de la estructura. Por lo tanto, requiere menos líneas de código, pero no se puede usar en múltiples estructuras de datos. Vea el siguiente ejemplo.
struct Employee { int id; char name[20]; struct Date { int dd; int mm; int yyyy; })doj; }emp1;
Podemos acceder a los miembros de la estructura anidad mediante Outer_Structure.Nested_Structure.member, como se muestra a continuación:
e1.doj.dd e1.doj.mm e1.doj.yyyy
Veamos un ejemplo simple de estructura anidada en C.
#include<stdio.h> #include<string.h> struct Employee { int id; char name[20]; struct Date { int dd; int mm; int yyyy; })doj; })e1; int main( { //Almacenar información del empleado e1.id =101; strcpy(e1.name, "Sonoo Jaiswal");//Copiar cadena a arreglo de caracteres e1.doj.dd =10; e1.doj.mm =11; e1.doj.yyyy =2014; //Imprimir información del primer empleado printf("ID del empleado : %d\n", e1.id); printf("Nombre del empleado : %s\n", e1.name); printf("Fecha de incorporación del empleado (dd/mm/yyyy) : %d/%d/%d\n", e1.doj.dd,e1.doj.mm,e1.doj.yyyy); return 0; }
Salida:
ID del empleado : 101 Nombre del empleado : Seagull Ali Fecha de incorporación del empleado (dd/mm/yyyy) : 10/11/2014
Al igual que otras variables, las estructuras también se pueden pasar a las funciones. Podemos pasar los miembros de la estructura a las funciones, o pasar la variable de estructura completa. El siguiente ejemplo pasa la variable de estructura employee a la función display(), que se utiliza para mostrar los detalles del empleado.
#include<stdio.h> struct address { char city[20]; int pin; char phone[14]; }; struct employee { char name[20]; struct address add; }; void display(struct employee); void main () { struct employee emp; printf("Ingrese información del empleado?\n"); scanf("%s %s %d %s",emp.name,emp.add.city, &emp.add.pin, emp.add.phone); display(emp); } void display(struct employee emp) { printf("Imprimir información del empleado.....\n"); printf("%s %s %d %s",emp.name,emp.add.city,emp.add.pin,emp.add.phone); }