/* 结构体的嵌套 结构体定义中,结构体的成员又是另外一个结构体的变量 注意: 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); }
|