int a[3][4]这个无需多说,就是一个二维数组。int (*p)[4]就相当于int p[][4],它就是一个二维数组的指针,可以指向一个第二维度为4的二维数组。而a就是这样的数组,因而下面是合法的。p=a;int *p[3]是指针数组。说白了,就是定义了三个指针,分别为p[0],p[1],p[2]。可以将他们单独拿来使用。int a1,a2,a3;p[0]=&a1;p[1]=&a2;p[2]=&a3;