int a[2][4]={1,2,3,4,5,6,7,8};
int (*p)[4];
p=a; //正确
p=a[0] //错误
由于[]优先级高,所以*p加括号,int (*p)[4]这种写法首先说明了p是一个指针,指向了具有4个int类型的一维数组;所以给p赋值时应该赋有行地址属性的地址
int a[2][4]={1,2,3,4,5,6,7,8};
int *p[2]={a[0],a[1]};
printf("%d,%d,%d",**p,*p[0],p[0][0]);//输出1,1,1
int *p[2] ,p首先和[ ]结合,成为一个数组;数组中存放的是int类型的指针,使用时有三种用法。
需要注意的是指针数组中存放的指针只能为列指针,且**p这种用法只能在指针数组中使用