这两个其实是数字指针和指针数组的区别。我们一个一个来说明:
int *p[3];//定义了一个三维数组,其中的每个元素p[0]、p[1]、p[2]都是指向int变量的指针。
int (*p)[3];//定义了一个指针,这个指针是指向一个三维数组的。
两者之间的区别和联系可以用一个二维数组来阐述:
int *p[3];//定义p[3]为指针数组
int (*q)[3];//定义q为数组指针
int a[4][3];//定义一个二维数组
p[0]=&a[0][0];//可以取a[4][3]中任意元素的地址给p[3]中的元素赋值
q=a[1];//a[1]其实是一个三维数组,其元素包括a[1][0],a[1][1],a[1][2],所以
//a[1]就表示这个数组的首地址,这个地址可以用来给q赋值