程序解读,m[12]和*P[3]是数组吗?我不怎么理解


#include 
main ()
{int m[12],k;
int *p[3],sum=0;
for(k=0;k<12;k++)
{m[k]=2*k;
if(k<3)
p[k]=m+2*k*k;
}
for(k=0;k<3;k++)
sum+=(*(p+k))[4-k];
printf("sum=%d\n",sum);
}

m[12]是数组,数组元素是int类型
而 * p[3]是也是数组,但数组元素是in t* 指针

int m[12]是定义一个大小为12个整型元素的数组
int*p[3]是定义一个大小为3个int*类型元素的数组

[]的优先级高于*,所以p先和[]结合。所以p是数组,你把数组名和[]去掉,剩下的就是元素的类型,即int *