c中的嵌套结构体

本文概述

  • 访问嵌套结构
  • C嵌套结构示例
  • 将结构传递给功能
【c中的嵌套结构体】C为我们提供了将一个结构嵌套在另一结构中的功能,从而创建复杂的数据类型。例如,我们可能需要在结构中存储实体员工的地址。属性地址也可以包含子部分,例如街道编号,城市,州和密码。因此,要存储员工的地址,我们需要将员工的地址存储到一个单独的结构中,并将该结构的地址嵌套到该结构的员工中。考虑下面的程序。
#include< stdio.h> 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?\n"); scanf("%s %s %d %s", emp.name, emp.add.city, & emp.add.pin, emp.add.phone); printf("Printing the employee information....\n"); printf("name: %s\nCity: %s\nPincode: %d\nPhone: %s", emp.name, emp.add.city, emp.add.pin, emp.add.phone); }

输出量
Enter employee information?ArunDelhi1100011234567890Printing the employee information....name: ArunCity: DelhiPincode: 110001Phone: 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 < stdio.h> #include < string.h> 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\n", e1.id); printf( "employee name : %s\n", e1.name); printf( "employee date of joining (dd/mm/yyyy) : %d/%d/%d\n", 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

将结构传递给功能就像其他变量一样,结构也可以传递给函数。我们可以将结构成员传递到函数中,也可以一次传递结构变量。考虑以下示例,将结构变量employee传递给函数display(),该函数用于显示员工的详细信息。
#include< stdio.h> 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?\n"); 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....\n"); printf("%s %s %d %s", emp.name, emp.add.city, emp.add.pin, emp.add.phone); }

    推荐阅读