返回介绍

4.9 类型组合

发布于 2024-10-08 23:14:02 字数 2715 浏览 0 评论 0 收藏 0

本章介绍了数组、结构和指针。可以各种方式组合它们,下面介绍其中的一些,从结构开始:

可以创建这种类型的变量:

然后使用成员运算符访问其成员:

可创建指向这种结构的指针:

将该指针设置为有效地址后,就可使用间接成员运算符来访问成员:

可创建结构数组:

然后,可以使用成员运算符访问元素的成员:

其中 trio 是一个数组,trio[0]是一个结构,而 trio[0].year 是该结构的一个成员。由于数组名是一个指针,因此也可使用间接成员运算符:

可创建指针数组:

咋一看,这有点复杂。如何使用该数组来访问数据呢?既然 arp 是一个指针数组,arp[1]就是一个指针,可将间接成员运算符应用于它,以访问成员:

可创建指向上述数组的指针:

其中 arp 是一个数组的名称,因此它是第一个元素的地址。但其第一个元素为指针,因此 ppa 是一个指针,指向一个指向 const antarctica_years_end 的指针。这种声明很容易容错。例如,您可能遗漏 const,忘记*,搞错顺序或结构类型。下面的示例演示了 C++11 版本的 auto 提供的方便。编译器知道 arp 的类型,能够正确地推断出 ppb 的类型:

在以前,编译器利用它推断的类型来指出声明错误,而现在,您可利用它的这种推断能力。

如何使用 ppa 来访问数据呢?由于 ppa 是一个指向结构指针的指针,因此*ppa 是一个结构指针,可将间接成员运算符应用于它:

由于 ppa 指向 arp 的第一个元素,因此*ppa 为第一个元素,即&s01。所以,(*ppa)->year 为 s01 的 year 成员。在第二条语句中,ppb+1 指向下一个元素 arp[1],即&s02。其中的括号必不可少,这样才能正确地结合。例如,*ppa->year 试图将运算符*应用于 ppa->year,这将导致错误,因为成员 year 不是指针。

上面所有的说法都对吗?程序清单 4.23 将这些语句放到了一个简短的程序中。

程序清单 4.23 mixtypes.cpp

该程序的输出如下:

该程序通过了编译,并向前面介绍的那样运行。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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