通过一个示例程序,了解数组、结构和指针的类型组合。
//mixtypes.cpp -- 结构、数组、指针的类型组合
#include <iostream>
struct antarctica_years_end //结构声明
{
int year;
};
int main()
{
antarctica_years_end s01, s02, s03; //创建三个结构
s01.year = 1998; //使用句点成员运算符访问s01结构中的year成员
antarctica_years_end * pa = &s02; //创建指向s02结构的指针pa
pa->year = 1999; //使用指针和箭头成员运算符来访问s02结构中的year成员
antarctica_years_end trio[3]; //创建包含三个结构的结构数组
trio[0].year = 2003; //利用数组元素索引号和句点成员运算符来访问结构数组中第一个结构的year成员
std::cout << trio->year << std::endl; //因为数组名是一个指针,所以也可以用箭头运算符来访问元素的成员
const antarctica_years_end * arp[3] = { &s01,&s02,&s03 }; //创建指针数组
std::cout << arp[1]->year << std::endl; //arp是一个指针数组,arp[1]就是一个指针,所以可用箭头运算符来访问成员
const antarctica_years_end ** ppa = arp; //创建指向指针数组的指针
auto ppb = arp; //通过arp的类型自动推断出ppb的类型,这句程序即为 const antarctica_years_end ** ppb = arp;
std::cout << (*ppa)->year << std::endl; //arp是一个数组,ppa指向arp的第一个元素,因此*ppa为第一个元素,即&s01
std::cout << (*(ppb + 1))->year << std::endl; //ppb+1指向下一个元素arp[1],即&s02
return 0;
}