int(*p)[2]是一个指针,是一个指向数组的指针,也是二维数组的行指针。
int a[3][4] ={0};
p = a; 可以把a赋给p,因为p指向二维数组的行指针。当然p = a+1;等等都是正确的。
int *p[2]; 声明了一个数组,数组名为p,数组里面的元素为int*(存放int变量的地址)
理解以下代码:
#include<stdio.h>
int main(int argc, char **argv)
{
int arry[3][2] = {{1,2},{3,4},{5,6}};
int (*p)[2] = arry;
printf("%d\n", *(*(p+1)+0));
int arr[2][3][2] = { {{1,2},{3,4},{5,6}} ,{{11,22},{33,44},{55,66}} };
int (*p2)[3][2] = arr;
int (*m)[2] = p2[0];//0-1
int (*n) = m[0];//0-3
int k = n[0];//0-1
printf("arr[0][0][0]=%d\n",k);
return 0;
}