Ц нам пружа могућност угнежђења једне структуре у другу структуру помоћу које се креирају сложени типови података. На пример, можда ћемо морати да ускладиштимо адресу запосленог ентитета у структури. Адреса атрибута такође може имати подделове као што су број улице, град, држава и пин код. Дакле, да бисмо сачували адресу запосленог, морамо да ускладиштимо адресу запосленог у посебну структуру и угнездимо адресу структуре у структуру запосленог. Размотрите следећи програм.
#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) Одвојена структура
Овде креирамо две структуре, али зависну структуру треба користити унутар главне структуре као члан. Размотрите следећи пример.
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); }