数组指针(也称为行指针)
定义:int(*p)[n];()的优先级高说明p是指针,p指针指向一个整型数组,n是p的步长,也就是p+1移动sizeof(int)*n的大小。
二维数组:int a[m][n]; p =a;也就是 p = a[0]或者p = &a[0][0]; p指向含有n个元素的一维数组;p+1直接指向a[1]。
指针数组
定义:int *p[n] ,[ ]的优先级高,p先与[ ]结合 说明是数组。int* 说明整型指针数组。p+1指向下一个数组元素。所以以下的赋值是错误的:p = a; p是不可知的表示。只存在p[0],p[1],p[2],p[n-1] 。而且他们是指针变量可以用来存放地址。将二维数组赋值给指针数组。
int a[2][4];
int *p[2];
*p = a;
p++是p[1] ,
因为p[0],p[1]是指针变量所以要分别赋值。
for(int i =0;i<2;++i)
{ p[i] = a[i]};
数组指针在内存中占有一个指针的内存大小,指针数组在内存中占是n个指针大小的内存,并且内存是连续的。优先级的大小()> [ ] >*;