一、一維數組1.代碼
int a[10], i;for(i = 0; i < 10; i++)a[i] = i * 10;int *pa = a;cout<<pa<<endl;cout<<*pa<<endl;cout<<pa+1<<endl;cout<<*pa+1<<endl;cout<<*(pa+1)<<endl;
2.輸出結果3.解釋pa:a[0]的地址。pa是指向a[0]的指標,*pa:a[0]。pa+1:a[1]的地址。pa+1是指向a[1]的指標,所以pa和pa+1相差4*pa+1:a[0]+1*(pa+1):a[1]二、二維數組1.代碼
//test2cout<<"test2"<<endl;int b[10][10], i, j;for(i = 0; i < 10; i++){for(j = 0; j < 10; j++)b[i][j] = i * 100 + j * 10;}int (*pb)[10] = b;cout<<pb<<' '<<pb+1<<endl;cout<<(*pb)<<' '<<(*pb+1)<<endl;cout<<*pb<<' '<<*(pb+1)<<' '<<*(pb+1)+1<<endl;cout<<**pb<<' '<<**pb+1<<endl;cout<<(*(*pb))<<' '<<(*(*pb+1))<<' '<<(*(*pb+1)+1)<<endl;cout<<**(pb)<<' '<<**(pb+1)<<' '<<**(pb+1)+1<<endl;
2.輸出結果3.解釋第一行:pb:b[0]的地址。pb是指向b[0]的指標,b[0]是一個int[10]數組。pb+1:b[1]的地址。pb指向的對象是一個數組,所以pb和pb+1相差0x28第二行:*pb:b[0][0]的地址。*pb是指向b[0][0]的指標,b[0][0]是一個int。雖然b[0]和b[0][0]的地址是一樣的,但是兩個指標指向的對象是不一樣的。*pb+1:b[0][1]的地址。pb是指向b[0][1]的指標,b[0][1]是一個int。因此*pb和*pb+1相關4第三行:*pb:b[0][0]的地址。*(pb+1):b[1][0]的地址。pb+1指向b[1]。*(pb+1)+1:b[1][1]的地址。第四行:**pb:pb[0][0]。pb指向pb[0]。*pb指向pb[0][0]。**pb是pb[0][0]的內容。**pb+1:b[0][0]+1。第五行:*(*pb):pb[0][0](*(*pb+1)):pb[0][1](*(*pb+1)+1):pb[0][1]+1*(*(pb+1)+1):pb[1][1] 第六行:**(pb):pb[0][0]**(pb+1):pb[1][0]**(pb+1)+1:pb[1][0]+1