数组指针和指针数组的区别:

 

1.指针数组

   对于指针数组,他首先是一个数组;

    譬如   int  *p1[10]

 由于“[ ]”的优先级高,所以先于p1结合成为一个数组,再被定义成int *成为×××指针数组。它含有10个指针类型的数组元素,即每个元素的类型都是int*;在此p1[0],p1[1].....p1[n]分别是指针变量,可以用来存放地址。*p1=a表示指针数组第一个元素的值,a的首地址的值。

区分数组指针和指针数组_元素

2.对于数组指针,首先它是一个指针。

  譬如:定义一个数组指针:

   int (*p2)[10];

 对于所定义的数组指针“()”的优先级高,p2先是一个指针,并且它是指向一个×××的一维数组,

这个一维数组含有10个元素,每个元素都是int,当执行p2+1时,p2此时要跨过10个整型数据的长度

int   *p[4];         //指针数组。  是个有4个元素的数组, 每个元素的是指向整型的指针。(数组的每个元素都是指针)
int   (*p)[4];       //数组指针。 它是一个指针,指向有4个整型元素的数组。       (一个指针指向有4个整型元素的数组)
int *func(void);     //指针函数。 无参函数, 返回整型指针。          (函数的返回值为int*)    

int (*func)(void);   //表示函数指针,可以指向无参, 且返回值为整型指针的函数。      (函数的返回值为int)