2 using namespace std;
3 //结构变量.*成员指针 , 结构指针->*成员指针
4 struct date{
5 int year;
6 int month;
7 int day;
8 void print(){cout<<year<<" - "<<month<<" - "<<day<<endl;}
9 };
10 void f(double d){cout<<d<<endl;}
11 void showmember(date a[],int n,int date::*p)
12 {
13 for(int i = 0;i<n;i++)
14 {
15 cout<<a[i].*p<<" ";//*(a+i).*p == (a+i)->*p;
16 }
17 cout<<endl;
18 }
19 int main()
20 {
21 date a[5] = {{2012,3,2},{2019,4,1},{2014,3,19},{2012,9,21},{1999,12, 18}};
22 date d = {1992,11,4};
23 cout<<"&d = "<<&d<<endl;
24 cout<<"&d.year = "<<&d.year<<",&d.month = "<<&d.month<<",&d.day = "< <&d.day<<endl;
25 cout<<&date::year<<&date::month<<&date::day<<endl;
26 // cout<<&main<<&f<<endl;
27 union
28 {
29 int n;
30 int date::*mp;
31 };
32 mp = &date::day;
33 cout<<" n = "<<n<<endl;
34 cout<<d.*mp<<endl;
35 mp = &date::year;
36 cout<<d.*mp<<endl;
37 showmember(a,5,&date::month);
38 showmember(a,5,&date::year);
39 showmember(a,5,&date::day);
40 d.print();
41 a[3].print();
42 void(date::*pf)() = &date::print;
43 (d.*pf)();
44 (a->*pf)();
45
46 return 0;
47 }