logo

C의 중첩 구조

C는 복잡한 데이터 유형이 생성되는 다른 구조 내에 하나의 구조를 중첩하는 기능을 제공합니다. 예를 들어, 엔터티 직원의 주소를 구조에 저장해야 할 수도 있습니다. 속성 주소에는 거리 번호, 도시, 주 및 핀 코드와 같은 하위 부분이 있을 수도 있습니다. 따라서 직원의 주소를 저장하려면 직원의 주소를 별도의 구조에 저장하고 구조 주소를 직원 구조에 중첩해야 합니다. 다음 프로그램을 고려해보세요.

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

보시다시피 doj(가입 날짜)는 Date 유형의 변수입니다. 여기서 doj는 Employee 구조의 멤버로 사용됩니다. 이러한 방식으로 다양한 구조에서 Date 구조를 사용할 수 있습니다.

2) 임베디드 구조

임베디드 구조를 사용하면 구조 내부에 구조를 선언할 수 있습니다. 따라서 코드 라인이 덜 필요하지만 여러 데이터 구조에서 사용할 수 없습니다. 다음 예를 고려하십시오.

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

중첩된 구조에 접근하기

아래와 같이 Outer_Structure.Nested_Structure.member를 통해 중첩 구조의 멤버에 액세스할 수 있습니다.

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

C 중첩 구조의 예

C 언어의 중첩 구조에 대한 간단한 예를 살펴보겠습니다.

 #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 

함수에 구조 전달

다른 변수와 마찬가지로 구조도 함수에 전달될 수 있습니다. 구조 멤버를 함수에 전달하거나 구조 변수를 한 번에 전달할 수 있습니다. 직원의 세부 정보를 표시하는 데 사용되는 함수 display()에 구조 변수 직원을 전달하려면 다음 예를 고려하십시오.

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