您的位置:首页 > 编程语言 > C语言/C++

结构体的嵌套

2015-07-09 14:06 316 查看
/*
    结构体的嵌套
        
        结构体定义中,结构体的成员又是另外一个结构体的变量
 
    注意:
        1)结构体定义中可以嵌套其他结构体类型的变量,不可以嵌套自己这个类型的变量
 
        2)可以嵌套自己类型的指针
 */
void demo(){
    //定义一个Date的结构体
    struct Time{
        int hour;
        int min;
        int sec;
    };
    
    
    struct Date{
        
        int year;
        int month;
        int day;
        struct
Time time;
    };
    
    //定义一个学生的结构体
    struct Student{
        
        char *name;
        int age;
        float score;
        struct
Date birthday;
        //struct Student stu;  //错误的
        //struct Student *stu; //这是正确的
    };
    
    //1、嵌套的结构体进行初始化
    struct
Student stu1 = {"huguozhang胡",19,88.5f,{1986,2,18,{10,50,12}}};
    
    //2、嵌套的结构体访问
    printf("姓名:%s,年龄:%d(生日:%d-%02d-%02d),成绩:%.2f\n",stu1.name,stu1.age,stu1.birthday.year,stu1.birthday
           .month,stu1.birthday.day,stu1.score);
    
    printf("姓名:%s,年龄:%d(生日:%d-%02d-%02d
%02d:%02d:%02d),成绩:%.2f\n",stu1.name,stu1.age,stu1.birthday.year,stu1.birthday
           .month,stu1.birthday.day,stu1.birthday.time.hour,stu1.birthday.time.min,stu1.birthday.time.sec,
stu1.score);
    
    
    //3、结构体嵌套自身的指针
    struct Person{
        char *name;
        int age;
        //嵌套自己类型的指针
        struct
Person *child;
    
    };
    
    struct
Person kim = {"kim",8,NULL};
    
    struct
Person p1 = {"林志颖",35,&kim};
    
    
    //结构体嵌套自身指针的,访问
    printf("%s的儿子是:%s,儿子的年龄:%d\n",p1.name,(*p1.child).name,(*p1.child).age);
    printf("%s的儿子是:%s,儿子的年龄:%d\n",p1.name,p1.child->name,p1.child->age);
    
    
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息