数组指针和指针数组的区别:
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)
原文:http://10738432.blog.51cto.com/10728432/1716098