文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
7.1.6 结构体的嵌套
C 语言中,可以将一个结构体作为另外一个结构体的成员,即允许结构体的嵌套使用。例如,我们首先定义一个关于日期的结构体类型 Date。代码如下:
然后,在 Person 结构体中再添加一个 Date 结构体类型的成员 birthday,用来表示人的生日。例如:
下面定义一个 struct Person 类型的结构变量 zs,并对其进行初始化。例如:
struct Person zs = {"zhangSan", 20, 1.82, 78.5, 1999, 8, 28};
在初始值列表中共有 7 个初始值,前面 4 个初始值会分别初始化给 zs 的前四个成员,而 zs 的第五个成员 birthday 本身又是一个结构体类型,它拥有 3 个 short 类型的成员。因此,初始值列表中最后的 3 个初始值,会初始化给 birthday 的这三个成员。当然,也可以将这 3 个初始值再使用大括号括起来,以更清晰的方式来表达,这是给 zs 的第五个成员 birthday 的初始值。例如:
struct Person zs = {"zhangSan", 20, 1.82, 78.5, {1999, 8, 28}};
那如何对结构体变量 zs 的所有成员进行访问呢?
zs 的前四个成员都是基本数据类型,通过一个成员访问运算符,就可以访问到它们。例如:
zs.name; zs.age; zs.height; zs.weight;
而 zs 的第五个成员是一个 struct Date 类型的结构体变量 birthday,所以,我们需要两个成员访问运算符才能访问到 birthday 的成员。例如:
zs.birthday.year; zs.birthday.month; zs.birthday.day;
首先通过第一个成员访问运算符来访问到 zs 的成员 birthday,再通过第二个成员访问运算符来分别访问到 birthday 的成员 year、month 和 day。
最后通过 printf 函数来打印输出 zs 的所有成员。例如:
printf("Name: %s\n", zs.name); printf("Age: %d\n", zs.age); printf("Height: %.2f m\n", zs.height); printf("Weight: %.2f kg\n", zs.weight); printf("Birthday: %hd-%hd-%hd\n", zs.birthday.year, zs.birthday.month, zs.birthday.day);
编译运行程序,结果如下:
Name: zhangSan Age: 20 Height: 1.82 m Weight: 78.50 kg Birthday: 1999-8-28
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论