参考: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