最近发现公司有些人说怎样区分 数组指针 和 指针数组 ? 其实 很简单;
数组指针, 先是(定语 ) (主体), (定语 数组) + (主体 指针) ,就说明, 这是一个指针 (主体 指针), 指向的是一个 (定语 数组);
例如:
int a[3][4];
int (*p)[4] = a; // p 是数组指针, p指向的是a数组,并把a[0] 赋值给 p;
p++; // p++ 后p指向 a[1]
p++; // p++ 后p指向 a[2]
指针数组,按 先是(定语) (主体), (定语 指针) (主体 数组) ,就说明, 这是一个 数组, 数组中的每个元素都是指针;
int a[4],b[8],c[12],d[20];
int *p[4]; //指针数组, 数组中的每个元素都是指针;
p[0] = a;
p[1] = b;
p[2] = c;
p[3] = d;
增加使用实例:
int a[3][4]= {0,1,2,3,4,5,6,7,8,9,10,11};
int *p[3] = {(int*)a,(int*)(a+1),(int*)(a+2)};
int (*p2)[4] = a;
printf("%d\n",p[2][3]);
printf("%d\n",p2[2][3]);