数组指针
顾名思义,就是指向数组的指针。
每个元素是一个一维数组
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的地址