如下代碼:
#include <iostream>
struct MyStruct {
int year;
};
using namespace std;
int main(int argc, const char * argv[]) {
MyStruct ms1,ms2,ms3;
ms1.year = 1998;
MyStruct *pa = &ms2;
pa->year = 1999;
MyStruct msArray[3];
msArray[0].year = 2000;
(msArray + 1)->year = 2008;
const MyStruct *msArp[3] = {&ms1,&ms2,&ms3};
cout << msArp[1]->year << endl;
const MyStruct **msPpa = msArp;
auto msppb = msArp;
cout << msPpa[0]->year << endl;
cout << (*msPpa)->year << endl;
cout << (*(msppb + 1))->year << endl;
return 0;
}
說(shuō)明:
1.pa是一個(gè)指針地址判帮,指向結(jié)構(gòu)體對(duì)象ms2逃魄,所以可通過(guò)pa->year或(****pa).year來(lái)訪問(wèn)結(jié)構(gòu)體的成員year彤恶;
2.msArray是一個(gè)結(jié)構(gòu)體數(shù)組袋倔,msArray[0]是一個(gè)結(jié)構(gòu)體對(duì)象,msArray[0].year是結(jié)構(gòu)體的成員诅岩;由于數(shù)組名是一個(gè)指針讳苦,指向數(shù)組第一個(gè)元素的地址带膜,所以我們可以使用指針運(yùn)算,如:(msArray + 1)->year來(lái)訪問(wèn)數(shù)組元素的成員医吊;
3.msArp是一個(gè)指針數(shù)組钱慢,數(shù)組元素為結(jié)構(gòu)體對(duì)象的指針地址,所以我們可以通過(guò)箭頭運(yùn)算符來(lái)訪問(wèn)結(jié)構(gòu)體成員卿堂,即msArp[1]->year或者(msArp)->year
4.由于msArp數(shù)組名是一個(gè)指針,指向數(shù)組第一個(gè)元素(結(jié)構(gòu)體)的地址懒棉,所以由下:
const MyStruct** ****msPpa = msArp;
msPpa是一個(gè)指向結(jié)構(gòu)體指針(數(shù)組第一個(gè)元素為一個(gè)結(jié)構(gòu)體指針)的指針草描,所以msPpa是一個(gè)結(jié)構(gòu)體指針,*msPpa是一個(gè)結(jié)構(gòu)體對(duì)象