C语言基础:C语言结构体(7) - 结构体的嵌套使用

上一节, 我们讲解了结构体与函数, 这次我们来讲解一下结构体的嵌套使用.


比如有一个学生, 我需要知道他的学号, 生日年月日, 入学年月日, 如果用结构体我们需要怎么做呢?


按照常规的定义, 就像下面的例子:

#include <stdio.h>

int main()
{
    struct Date
    {
        int number; //学号
        
        int year;   //生日
        int month;
        int day;
        
        int year2;  //入学
        int month2;
        int day2;
    };
    
    return 0;
}

这样子我们才能完整的实现我们的需求, 但如果我还需要多个数据呢? 那不就要定义更多的成员变量了吗? 为了实现这个要求, 我们还有另外一种方式, 就像下面的例子:

#include <stdio.h>

int main()
{
    struct Date
    {
        int year;
        int month;
        int day;
    };
    
    struct Student
    {
        int number; //学号
        
        struct Date birthday;   //生日
        struct Date startSchool;    //入学时间
    };
    
    struct Student stu = {1, {1999, 12, 20}, {2005, 9, 1}};
    
    printf("year = %d   month = %d  day = %d\n", stu.birthday.year, stu.birthday.month, stu.birthday.day);
    
    return 0;
}

结构体的嵌套使用, 可以更加的方便我们去调用和实现需求~~但有一个注意点, 结构体嵌套是不能包含它自己本身, 就好像下面这个错误的例子:

#include <stdio.h>

int main()
{
    struct Date
    {
        int year;
        int month;
        int day;
    };
    
    struct Student
    {
        int number; //学号
        
        struct Date birthday;   //生日
        struct Date startSchool;    //入学时间
        
        struct Student stu;
    };

    return 0;
}

这是错误的写法, 编译器是不会允许通过的.



结构体讲到这里, 就已经讲完了, 其实除了结构体还有一种类型叫做共用体, 也叫做联合体, 一般来讲开发基本上是用不到, 所以这里不特别的说明, 有兴趣的童鞋们可以自行百度一下~~顺便练练自己的自学能力~~~下次我们再见~

posted @ 2015-01-10 14:06  背着吉他去流浪  阅读(786)  评论(0编辑  收藏  举报