最近發現公司有些人說怎樣區分 數組指針 和 指針數組 ? 其實 很簡單;
數組指針, 先是(定語 ) (主體), (定語 數組) + (主體 指針) ,就說明, 這是一個指針 (主體 指針), 指向的是一個 (定語 數組);
例如:
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]);