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