logo

Угнежђена структура у Ц

Ц нам пружа могућност угнежђења једне структуре у другу структуру помоћу које се креирају сложени типови података. На пример, можда ћемо морати да ускладиштимо адресу запосленог ентитета у структури. Адреса атрибута такође може имати подделове као што су број улице, град, држава и пин код. Дакле, да бисмо сачували адресу запосленог, морамо да ускладиштимо адресу запосленог у посебну структуру и угнездимо адресу структуре у структуру запосленог. Размотрите следећи програм.

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

Излаз

уради вхиле петљу јава
 Enter employee information? Arun Delhi 110001 1234567890 Printing the employee information.... name: Arun City: Delhi Pincode: 110001 Phone: 1234567890 

Структура се може угнездити на следеће начине.

  1. По посебној структури
  2. По уграђеној структури

1) Одвојена структура

Овде креирамо две структуре, али зависну структуру треба користити унутар главне структуре као члан. Размотрите следећи пример.

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

Као што видите, дој (датум придруживања) је променљива типа Датум. Овде се дој користи као члан у структури запослених. На овај начин можемо користити структуру датума у ​​многим структурама.

2) Уграђена структура

Уграђена структура нам омогућава да декларишемо структуру унутар структуре. Дакле, захтева мање линија кодова, али се не може користити у више структура података. Размотрите следећи пример.

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

Приступ угнежђеној структури

Члану угнежђене структуре можемо приступити преко Оутер_Струцтуре.Нестед_Струцтуре.мембер као што је дато у наставку:

које године је изумљен компјутер
 e1.doj.dd e1.doj.mm e1.doj.yyyy 

Ц Пример угнежђене структуре

Хајде да видимо једноставан пример угнежђене структуре у језику Ц.

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

Излаз:

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

Прелазак структуре на функцију

Као и друге варијабле, структура се такође може пренети функцији. Можемо проследити чланове структуре у функцију или променљиву структуре одједном. Размотрите следећи пример да проследите структурну променљиву емплоиее функцији дисплаи() која се користи за приказ детаља о запосленом.

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