数组指针

顾名思义,就是指向数组的指针。
每个元素是一个一维数组

int a[3] = {1,2,3};
int(* p)[n] = { };
*p[0] = &a;
printf("%d",*p[0][0]);//输出1,即a[0]

指针数组

数组每个元素都是指针

int a = 1, b = 2;
int *p[n] = { };
*p[0] = &a;
*p[1] = &b;
printf("%d",*p[0]);//输出1,即a
printf("%d",*p[0]);//输出2,即b

指向数组的指针

直接指向数组

int a[3] = {1,2,3};
int *p = &a;
printf("%d",*p]);//输出1,即a[0]
printf("%d",*p[1]);//输出2,即a[1]
printf("%d",*p+1);//输出2,即a[1]

指向指针的指针

直接指向数组

int a = 1;
int *p1 = &a;
int **p2 = &p1;
printf("%p %p %p",a,p1,p2);//a,p1,p2自己地址
printf("%p %p %p",*p1,*p2,**p2);//输出a的地址,p1的地址,a的地址
Last modification:November 24, 2022
如果觉得我的文章对你有用,请随意赞赏