指针数组和数组指针——兄弟你的括号呢?

时间:2021-10-25 02:44:10

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