logo

Verschachtelte Struktur in C

C bietet uns die Möglichkeit, eine Struktur in einer anderen Struktur zu verschachteln, wodurch komplexe Datentypen erstellt werden. Beispielsweise müssen wir möglicherweise die Adresse eines Unternehmensmitarbeiters in einer Struktur speichern. Das Attribut „Adresse“ kann auch die Unterteile Straßennummer, Stadt, Bundesland und PIN-Code enthalten. Um die Adresse des Mitarbeiters zu speichern, müssen wir daher die Adresse des Mitarbeiters in einer separaten Struktur speichern und die Strukturadresse in der Struktur Mitarbeiter verschachteln. Betrachten Sie das folgende Programm.

 #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); } 

Ausgabe

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

Die Struktur kann auf folgende Arten verschachtelt werden.

  1. Durch separate Struktur
  2. Durch eingebettete Struktur

1) Separate Struktur

Hier erstellen wir zwei Strukturen, aber die abhängige Struktur sollte innerhalb der Hauptstruktur als Mitglied verwendet werden. Betrachten Sie das folgende Beispiel.

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

Wie Sie sehen, ist doj (Beitrittsdatum) die Variable vom Typ Datum. Hier wird doj als Mitglied in der Mitarbeiterstruktur verwendet. Auf diese Weise können wir die Datumsstruktur in vielen Strukturen verwenden.

2) Eingebettete Struktur

Die eingebettete Struktur ermöglicht es uns, die Struktur innerhalb der Struktur zu deklarieren. Daher sind weniger Codezeilen erforderlich, es kann jedoch nicht in mehreren Datenstrukturen verwendet werden. Betrachten Sie das folgende Beispiel.

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

Zugreifen auf verschachtelte Strukturen

Wir können über Outer_Structure.Nested_Structure.member auf das Mitglied der verschachtelten Struktur zugreifen, wie unten angegeben:

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

Beispiel für eine verschachtelte C-Struktur

Sehen wir uns ein einfaches Beispiel der verschachtelten Struktur in der C-Sprache an.

 #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; } 

Ausgabe:

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

Struktur an Funktion übergeben

Genau wie andere Variablen kann auch eine Struktur an eine Funktion übergeben werden. Wir können die Strukturmitglieder an die Funktion übergeben oder die Strukturvariable auf einmal übergeben. Betrachten Sie das folgende Beispiel, um die Strukturvariable „mitarbeiter“ an eine Funktion display() zu übergeben, die zum Anzeigen der Details eines Mitarbeiters verwendet wird.

 #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); }