C语言 - Struct嵌套

C语言 - Struct嵌套 首页 / C语言入门教程 / C语言 - Struct嵌套

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?

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语言嵌套结构示例。

#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( )
{
   //存储员工信息
   e1.id=101;
   strcpy(e1.name, "Learnfk.com");//将字符串复制到字符数组中
   e1.doj.dd=10;
   e1.doj.mm=11;
   e1.doj.yyyy=2014;

   //打印第一个员工信息
   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 : Learnfk.com
employee date of joining (dd/mm/yyyy) : 10/11/2020

结构传递给函数

就像其他变量一样,结构也可以传递给函数。我们可以将结构成员传递到函数中,也可以一次传递结构变量。考虑以下示例,将结构变量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);
}

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

如何设计一个秒杀系统 -〔许令波〕

代码精进之路 -〔范学雷〕

设计模式之美 -〔王争〕

分布式系统案例课 -〔杨波〕

OAuth 2.0实战课 -〔王新栋〕

Redis核心技术与实战 -〔蒋德钧〕

etcd实战课 -〔唐聪〕

大数据经典论文解读 -〔徐文浩〕

中间件核心技术与实战 -〔丁威〕

好记忆不如烂笔头。留下您的足迹吧 :)