数组指针 和 指针数组

来源:互联网 发布:php 当天0点时间戳 编辑:程序博客网 时间:2024/05/20 00:10

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


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


例如:

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

0 0