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; }
这是错误的写法, 编译器是不会允许通过的.
结构体讲到这里, 就已经讲完了, 其实除了结构体还有一种类型叫做共用体, 也叫做联合体, 一般来讲开发基本上是用不到, 所以这里不特别的说明, 有兴趣的童鞋们可以自行百度一下~~顺便练练自己的自学能力~~~下次我们再见~