【C++學習筆記】型別組合

好好學習專用部落格發表於2017-04-03

一、結構

1、建立結構

struct antarctica_years_end
{
	int year;
}

2、建立結構的變數

antarctica_years_end s01,s02,s03;

3、使用運算子訪問其成員

s01.year = 1998;

4、建立指向結構的指標

antarctica_years_end * pa = &s02;

5、將該指標設定為有效地址後,使用間接成員運算子來訪問成員

pa->year = 1999;

6、可建立結構陣列

antarctica_years_end trio[3];

7、使用成員運算子訪問元素的成員

trio[0].year = 2003;

8、其中trio是一個陣列,而trio[0]是一個結構,而trio[0].year是該結構的一個成員。由於陣列名是一個指標,因此也可使用間接成員運算子

(trio+1)->year = 2004;

9、可以建立指標陣列

const antarctica_year_end * arp[3] = {&s01, &s02, &s03};

(1)訪問成員

std::cout << arp[1]->year << std::endl;

(2)建立指向上述陣列的指標

const antarctica_years_end ** ppa = arp;

其中arp是一個陣列的名稱,因此它是第一個元素的地址。但其第一個元素為指標,因此ppa是一個指標,指向一個指向const antarctica_years_end的指標。

這種宣告很容易出錯,因此C++11版本提供了auto

auto ppb = arp;

(3)如何使用ppa來訪問資料

std::cout << (*ppa)->year << std::endl;
std::cout << (*(ppb+1))->yera << std::endl;

二、例子

#include <iostream>

struct antarctica_years_end
{
	int year;
};

int main()
{
	using namespace std;
	antarctica_years_end s01, s02, s03;
	s01.year = 1998;
	antarctica_years_end * pa = &s02;
	pa->year = 1999;
	antarctica_years_end trio[3];
	trio[0].year = 2003;
	std::cout << trio->year << std::endl;
	const antarctica_years_end * arp[3] = {&s01, &s02, &s03};
	std::cout << arp[1]->year << std::endl;
	const antarctica_years_end ** ppa = arp;
	auto ppb = arp;
	std::cout << (*ppa)->year << std::endl;
	std::cout << (*(ppb+1))->year << std::endl;
	cin.get();
	return 0;
}







相關文章