设为首页 加入收藏

TOP

4.9 类型组合(1)
2013-10-07 15:42:48 来源: 作者: 【 】 浏览:78
Tags:4.9 类型 组合

4.9  类型组合(1)

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

 

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

 

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

 
可创建指向这种结构的指针:
 
将该指针设置为有效地址后,就可使用间接成员运算符来访问成员:
 
可创建结构数组:
 

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

 

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

 

可创建指针数组:

 

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

 

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

 

其中arp是一个数组的名称,因此它是第一个元素的地址。但其第一个元素为指针,因此ppa是一个指针,指向一个指向const antarctica_years_end的指针。这种声明很容易容错。例如,您可能遗漏const,忘记*,搞错顺序或结构类型。下面的示例演示了C++(www.cppentry.com)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.9 类型组合(2) 下一篇4.10.1 模板类vector

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何利用Python做数 (2025-12-24 23:48:36)
·如何使用python进行 (2025-12-24 23:48:34)
·python 爬虫入门该怎 (2025-12-24 23:48:31)
·Java 实现多个大文件 (2025-12-24 23:22:00)
·Java多线程编程在工 (2025-12-24 23:21:56)