返回介绍

7.1.6 结构体的嵌套

发布于 2025-04-11 22:33:02 字数 1601 浏览 0 评论 0 收藏 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。