数组指针 和 指针数组

最近发现公司有些人说怎样区分 数组指针  和   指针数组 ? 其实 很简单;


数组指针, 先是(定语 ) (主体), (定语  数组)  + (主体  指针) ,就说明, 这是一个指针 (主体  指针),  指向的是一个 (定语  数组);


例如:

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

你可能感兴趣的:(数组指针 和 指针数组)