C语言教程:结构体嵌套

2023年 7月 14日 71.1k 0

C语言中的嵌套结构体表示在一个结构体中可以使用另一个结构作为成员。在C语言中定义结构体嵌套有两种方法:

  • 通过独立的结构
  • 通过嵌入式结构
  • 1. 独立结构

    我们可以创建2个结构体,但在主结构中应该使用依赖其它结构体作为成员。我们来看看嵌套结构体的代码。

    struct Date  
    {  
       int dd;  
       int mm;  
       int yyyy;   
    };  
    struct Employee  
    {     
       int id;  
       char name[20];  
       struct Date doj;  // 嵌套一个结构体:Date,用于存储日期
    }emp1;
    

    C

    如上所见,doj(加入日期)是Date类型的变量。 这里doj用作为Employee结构体中的成员。通过这样的方式,我们可以在其他结构体中使用Date结构。

    2.嵌入式结构体

    我们可以在结构体内定义结构体,它比第一种方式需要更少的代码。但它不能用于其它结构中。

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

    C

    访问嵌套结构体

    我们可以通过Outer_Structure.Nested_Structure.member访问嵌套结构的成员,如下所示:

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

    C

    嵌套结构体示例

    我们来看看C语言中嵌套结构体的一个简单例子。创建一个源代码文件:nested-structure.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 = 1001;
        strcpy(e1.name, "Maxsu");//copying string into char array  
        e1.doj.dd = 12;
        e1.doj.mm = 11;
        e1.doj.yyyy = 2018;
    
        //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;
    }
    

    C

    执行上面示例代码,得到以下结果 -

    employee id : 1001
    employee name : Maxsu
    employee date of joining (dd/mm/yyyy) : 12/11/2018
    

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论