logo

Zagnieżdżona struktura w C

C zapewnia nam funkcję zagnieżdżania jednej struktury w innej strukturze, za pomocą której tworzone są złożone typy danych. Na przykład może zaistnieć potrzeba przechowywania adresu pracownika jednostki w strukturze. Adres atrybutu może również składać się z podczęści, takich jak numer ulicy, miasto, stan i kod PIN. Dlatego, aby zapisać adres pracownika, musimy zapisać adres pracownika w osobnej strukturze i zagnieździć adres struktury w strukturze pracownik. Rozważ następujący program.

 #include struct address { char city[20]; int pin; char phone[14]; }; struct employee { char name[20]; struct address add; }; void main () { struct employee emp; printf('Enter employee information?
'); scanf('%s %s %d %s',emp.name,emp.add.city, &emp.add.pin, emp.add.phone); printf('Printing the employee information....
'); printf('name: %s
City: %s
Pincode: %d
Phone: %s',emp.name,emp.add.city,emp.add.pin,emp.add.phone); } 

Wyjście

 Enter employee information? Arun Delhi 110001 1234567890 Printing the employee information.... name: Arun City: Delhi Pincode: 110001 Phone: 1234567890 

Strukturę można zagnieżdżać na następujące sposoby.

ograniczenia bankowości elektronicznej
  1. Według oddzielnej struktury
  2. Według struktury osadzonej

1) Oddzielna struktura

Tutaj tworzymy dwie struktury, ale struktura zależna powinna zostać wykorzystana wewnątrz struktury głównej jako pręt. Rozważ następujący przykład.

 struct Date { int dd; int mm; int yyyy; }; struct Employee { int id; char name[20]; struct Date doj; }emp1; 

Jak widać, doj (data przyłączenia) jest zmienną typu Date. Tutaj doj jest używany jako członek struktury pracowników. W ten sposób możemy wykorzystać strukturę Date w wielu strukturach.

podstawowe pytania do rozmowy kwalifikacyjnej w języku Java

2) Struktura osadzona

Struktura osadzona umożliwia zadeklarowanie struktury wewnątrz struktury. Dlatego wymaga mniej linii kodów, ale nie można go używać w wielu strukturach danych. Rozważ następujący przykład.

 struct Employee { int id; char name[20]; struct Date { int dd; int mm; int yyyy; }doj; }emp1; 

Dostęp do struktury zagnieżdżonej

Dostęp do elementu zagnieżdżonej struktury możemy uzyskać poprzez Outer_Structure.Nested_Structure.member jak podano poniżej:

 e1.doj.dd e1.doj.mm e1.doj.yyyy 

C Przykład struktury zagnieżdżonej

Zobaczmy prosty przykład struktury zagnieżdżonej w języku C.

przeanalizuj ciąg znaków na int
 #include #include struct Employee { int id; char name[20]; struct Date { int dd; int mm; int yyyy; }doj; }e1; int main( ) { //storing employee information e1.id=101; strcpy(e1.name, 'Sonoo Jaiswal');//copying string into char array e1.doj.dd=10; e1.doj.mm=11; e1.doj.yyyy=2014; //printing first employee information printf( 'employee id : %d
', e1.id); printf( 'employee name : %s
', e1.name); printf( 'employee date of joining (dd/mm/yyyy) : %d/%d/%d
', e1.doj.dd,e1.doj.mm,e1.doj.yyyy); return 0; } 

Wyjście:

 employee id : 101 employee name : Sonoo Jaiswal employee date of joining (dd/mm/yyyy) : 10/11/2014 

Przekazywanie struktury do funkcji

Podobnie jak inne zmienne, również strukturę można przekazać do funkcji. Możemy przekazać elementy struktury do funkcji lub od razu przekazać zmienną struktury. Rozważmy następujący przykład przekazania zmiennej strukturalnej pracownik do funkcji display(), która służy do wyświetlania szczegółowych informacji o pracowniku.

 #include 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('Enter employee information?
'); scanf('%s %s %d %s',emp.name,emp.add.city, &emp.add.pin, emp.add.phone); display(emp); } void display(struct employee emp) { printf('Printing the details....
'); printf('%s %s %d %s',emp.name,emp.add.city,emp.add.pin,emp.add.phone); }