1. 程式人生 > >指標陣列和陣列指標——兄弟你的括號呢?

指標陣列和陣列指標——兄弟你的括號呢?

參考:http://www.cnblogs.com/Romi/archive/2012/01/10/2317898.html

指標陣列:array of pointers,指有這麼一組陣列,每個元素都是指標。

int *a[4],本質是一個數組。

由於[]的優先順序高於*,所以當表示某個元素的時候,*a[i]和*(a[i])有相同的效果。

 

陣列指標:a pointer to an array,表示有一個指標,它指向一個數組,即第一個元素的地址。

int (*a)[4],本質是一個指標。

陣列指標也叫行指標,可以指向二維陣列:

int a[3][4];

int (*p)[4];

p=a;

 

舉個列子:

 1 #include <iostream>
 2 using namespace std;
 3 int main(){
 4     int arr[4]={0,1,2,3};//一個普通陣列 
 5     int *p_arr[4];        //定義一個 指標陣列 
 6     int (*arr_p)[4];//定義一個 陣列指標 
 7     
 8     arr_p=&arr;//讓陣列指標指向陣列(首元素地址)
 9     
10     for(int i=0;i<4;i++){    //將指標陣列中的指標逐一指向普通陣列的元素 
11 p_arr[i]=&arr[i]; 12 } 13 14 cout<<*p_arr[1]<<endl; 15 cout<<(*arr_p)[2]<<endl; 16 return 0; 17 }

輸出結果為:

1

2