1.廢話不多說,先上代碼:
#include <iostream> using namespace std; int main(void) { int v[2][5] = {{1,2,3,4,5},{6,7,8,9,10}}; int (*a)[5] = v; //指針數組,指針指向數組 a[5],a[5]里面是int數值 該指針等於v的地址 cout<<(*a+1)<<endl; //*a是v[0][0]的地址。 0x22fe04 cout<<(*a+2)<<endl; //輸出0x22fe08 cout<<*(*a+2)<<endl; //a[0][1]的值 3 cout<<*(a+1)<<endl; //輸出 v[1][0]的地址。 0x22fe14 cout<<**(a+1)<<endl; //a[1][1] = 6 int b[3]={11,12,13}; cout<<"一維數組:"<<endl; cout<<b<<endl; //b[0]的地址0x22fe30 cout<<(b+1)<<endl; //b[1]的地址 0x22fe34 cout<<(&b+1)<<endl; //輸出指向b的指針的地址+sizeof(b[3])的地址:0x22fe3c cout<<*(b+1)<<endl; // 12 cout<<*(&b+1)<<endl; //輸出的是0x22fe3c ,輸出的是他的地址值 (只能記住先!!) cin.get(); return 0; }
2.指針數組和數組指針的區別:
指針數組 : int (*p)[3]; //指針指向數組,p是一個指向數組p[3]的指針。
數組指針: int p[3]; //數組內存到數據是指針
----------跟 指針常量 常量在指針有點類似,誰先執行誰先讀,然后根據讀的方向判斷具體意思。