C语言教程:结构体嵌套

2018-10-0819:04:59编程语言入门到精通Comments3,309 views字数 1138阅读模式

C语言中的嵌套结构体表示在一个结构体中可以使用另一个结构作为成员。在C语言中定义结构体嵌套有两种方法:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6461.html

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

1. 独立结构文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6461.html

我们可以创建2个结构体,但在主结构中应该使用依赖其它结构体作为成员。我们来看看嵌套结构体的代码。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6461.html

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结构。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6461.html

2.嵌入式结构体文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6461.html

我们可以在结构体内定义结构体,它比第一种方式需要更少的代码。但它不能用于其它结构中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6461.html

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

访问嵌套结构体

我们可以通过Outer_Structure.Nested_Structure.member访问嵌套结构的成员,如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6461.html

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

嵌套结构体示例

我们来看看C语言中嵌套结构体的一个简单例子。创建一个源代码文件:nested-structure.c,其代码如下 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6461.html

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

执行上面示例代码,得到以下结果 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6461.html

employee id : 1001
employee name : Maxsu
employee date of joining (dd/mm/yyyy) : 12/11/2018
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/6461.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/6461.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定