天天看點

數組指針 和 指針數組

最近發現公司有些人說怎樣區分 數組指針  和   指針數組 ? 其實 很簡單;

數組指針, 先是(定語 ) (主體), (定語  數組)  + (主體  指針) ,就說明, 這是一個指針 (主體  指針),  指向的是一個 (定語  數組);

例如:

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]);